oracle REGEXP_REPLACE在每个字母数字组后插入一个字符

ua4mk5z4  于 2023-04-05  发布在  Oracle
关注(0)|答案(1)|浏览(205)

假设我有一个字符串'ABCSOSLOL',我想让它变成'ABC,SOS,LOL,'
我通过这次电话能够做到这一点

SELECT REGEXP_REPLACE('ABCSOSLOL',([[:alpha:]])([[:alpha:]])([[:alpha:]]),'\1\2\3,',1,0);

但是,如果字符串变成'AB 1 SOSLO 9',这将不起作用-因为现在它必须是字母数字。
更改:alpha:to [a-z 0 -9]不插入逗号。是否有字母数字替代:alpha:还是更好的方法?
在Teradata和Oracle中尝试这一点。

izkcnapc

izkcnapc1#

在Oracle中,您可以用途:

SELECT REGEXP_REPLACE('ABC123XY4', '([[:alnum:]]{3})', '\1,') FROM DUAL

或:

SELECT REGEXP_REPLACE('ABC123XY4', '([a-zA-Z0-9]{3})', '\1,') FROM DUAL

哪个输出:
| REGEXP_REPLACE('ABC123XY4 ','(:ALNUM:{3})','\1,')|
| --------------|
| ABC、123、XY4、|
如果你想去掉后面的逗号,你可以使用RTRIM(REGEXP_REPLACE('ABC123XY4', '([[:alnum:]]{3})', '\1,'), ',')
fiddle

相关问题