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

时间:2014-06-05 18:08:41

标签: oracle stored-procedures plsql

我有一个名为TP_GEO_ASSN的表,字段是ID,GEO_DETAILS。字段的值在下面给出

ID GEO_DETAILS

1印度| KARNATAKA |班加罗尔| RELIANCE SUPER MARKET

2印度| KERALA | CALICUT |表达超级市场

3印度| WEST BENGAL |加尔各答|更超市场

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

印度| KARNATAKA |班加罗尔| RELIANCE SUPER MARKET

我需要提取INDIA,KARNATAKA,BANGALORE,RELIANCE SUPER MARKET和
我需要将这些值与存储过程示例INDIA分开传递给一个变量,将KARNATAKA传递给另一个变量等等。 我怎么能这样做?
提前谢谢。

1 个答案:

答案 0 :(得分:0)

声明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>;

Var1将包含INDIA,var2将包含KARNATAKA等等。然后根据需要将变量传递到您的过程中。