oracle存储过程中的字符串提取

oracle存储过程中的字符串提取,oracle,stored-procedures,plsql,Oracle,Stored Procedures,Plsql,我有一个名为TP_GEO_ASSN的表,字段是ID,GEO_DETAILS。字段的值如下所示 ID GEO_详细信息 1印度|卡纳塔克邦|班加罗尔|信实超市 2印度|喀拉拉邦|卡利卡特|速递超市 3印度|西孟加拉邦|加尔各答|更多超市 我的问题是我需要编写一个过程,它将GEO_细节值提取到字符串变量中。 例如,我需要提取管道符号(|)之间的值 印度|卡纳塔克邦|班加罗尔|信实超市 我需要提取印度、卡纳塔克邦、班加罗尔、信实超市和 我需要将这些值分别从存储过程示例INDIA传入一个变量,KA

我有一个名为TP_GEO_ASSN的表,字段是ID,GEO_DETAILS。字段的值如下所示

ID GEO_详细信息

1印度|卡纳塔克邦|班加罗尔|信实超市

2印度|喀拉拉邦|卡利卡特|速递超市

3印度|西孟加拉邦|加尔各答|更多超市

我的问题是我需要编写一个过程,它将GEO_细节值提取到字符串变量中。
例如,我需要提取管道符号(|)之间的值

印度|卡纳塔克邦|班加罗尔|信实超市

我需要提取印度、卡纳塔克邦、班加罗尔、信实超市和
我需要将这些值分别从存储过程示例INDIA传入一个变量,KARNATAKA传入另一个变量,依此类推
我该怎么做?

提前感谢。

声明4个变量,并使用下面的查询存储这些变量

select trim(REGEXP_SUBSTR(YOUR_COL_NAME, '[^|]+', 1, 1)),
        trim(REGEXP_SUBSTR(YOUR_COL_NAME, '[^|]+', 1, 2)),
        trim(REGEXP_SUBSTR(YOUR_COL_NAME, '[^|]+', 1, 3)),
        trim(REGEXP_SUBSTR(YOUR_COL_NAME, '[^|]+', 1, 4))   into var1, var2, var3, var4   from <YOUR_TABLE_NAME>;
选择trim(REGEXP_SUBSTR(您的列名称,[^ |]+',1,1)),
trim(REGEXP_SUBSTR(您的列名称,[^ |]+',1,2)),
trim(REGEXP_SUBSTR(您的列名称,[^ |]+',1,3)),
修剪(REGEXP_SUBSTR(您的_COL_名称,[^ |]+',1,4))为var1,var2,var3,var4 from;
Var1将包含印度,var2将包含卡纳塔克邦等。。然后根据需要将变量传递到过程中