1

我有这样的字符串:

var = This a string, [This is another string]

我想让它们在 PLSQL 中分解成这样的东西

var1 = This is string
var2 = This is another string

如果如下所示,则不应包含逗号:

, [

基本上这决定是否有另一个字符串。

我该怎么做?

提前致谢 :-)

4

2 回答 2

3

您可以使用SUBSTR和的组合INSTR来拆分字符串。例如,要获取第一个字符串,您可以使用以下内容:

SELECT NVL(SUBSTR(var, 1, INSTR(var, ',') - 1), var)
FROM dual;

也就是说,找到分隔符 ( INSTR(var, ',')) 的索引,然后使用它SUBSTR来捕获直到该索引的所有内容。同样适用于第二个字符串。

于 2012-08-15T12:54:02.697 回答
2

我认为这会给你想要的,尽管我对你的解析要求不是 100% 清楚。

var1 := regexp_replace( var, '^([^[,]*).*$', '\1')
var2 := regexp_replace( var, '^[^[]*(\[([^]]*)\])?.*$', '\2')

这是一个测试正则表达式函数的sql fiddle 。

我也不确定正则表达式解决方案与其他方法的性能。

于 2012-08-15T14:42:02.917 回答