Oracle REGEXP_REPLACE替换;带引号字符串的分隔字符串

时间:2014-06-16 19:36:37

标签: sql regex string oracle

我需要一个简单的替换函数,它将以分号分隔的字符串列表替换为引用的逗号分隔字符串。

' 123;性Asd; _p1;'替换为' 123',' Asd',' _P1'

试过这个,但最后一个字符串错过了引号,字符串也可以有其他字符。

SELECT REGEXP_REPLACE('123;234;345;123','([[:alnum:]]+);', '''\1'',') List FROM DUAL;

2 个答案:

答案 0 :(得分:1)

我认为你不需要regexp_replace,一个简单的replace就足够了。您似乎只想用字符串替换分号"','"然后在字符串之前和之后添加单引号。

select q'{'}' ||
       replace( '123;234;345;123', ';', q'{','}' ) ||
       q'{'}'
  from dual

答案 1 :(得分:0)

SELECT REGEXP_REPLACE( REGEXP_REPLACE('123;234;345;123','([[:alnum:]]+);', '''\1'','), ',([[:alnum:]]+)', ',''\1''') FROM DUAL;