在字符串 Oracle SQL 之间插入字符

sim*_*ife 2 sql oracle oracle11g

我需要在 Oracle SQL 中的每个字符后插入字符串。

例子:

ABC  will A,B,C

DEFG will be D,E,F,G
Run Code Online (Sandbox Code Playgroud)

这个问题只给出字符串中的一个字符

Oracle 将字符插入字符串

bar*_*ity 5

编辑:正如一些研究员所提到的,Oracle 不承认这个正则表达式。所以我的方法是做一个正则表达式来匹配所有字符,在字符后添加一个逗号,然后删除最后一个逗号。

WITH regex AS (SELECT REGEXP_REPLACE('ABC', '(.)', '\1,') as reg FROM dual) SELECT SUBSTR(reg, 1, length(reg)-1) FROM regex;
Run Code Online (Sandbox Code Playgroud)

请注意,rtrim如果您要解析的字符串具有最后的结尾逗号并且您不想将其删除,则解决方案可能会出现错误。

以前的解决方案:(不适用于 Oracle)

检查这是否有效:

SELECT REGEXP_REPLACE('ABC', '(.)(?!$)', '\1,') FROM dual;
Run Code Online (Sandbox Code Playgroud)

它对regexp_replace每个字符执行 a ,但对同一个字符执行最后一个,后跟 a ,

要了解regexp_replace工作原理,我建议您:https : //docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htm

  • Oracle 不支持 Lookahead 和 Lookbehind。 (2认同)