使得逗号分隔的Oracle字符串

问题描述 投票:0回答:2

我们怎样才能转换成12345 1,2,3,4,5

我可以通过使用替代命令,我可以通过空代替逗号做反向。但我不能够做到以上。能否请您在同一个帮助。

提前致谢

sql oracle oracle11g oracle11gr2 listagg
2个回答
3
投票

如果你有像123412345123456789连续的,一个位数的固定模板

你可以尝试使用listagg甲骨文的功能如下:

with t as
(
 select '12345' as col from dual 
)
select listagg(level,',') within group (order by level) as str
   from t
connect by level <= length(col);

STR
---------
1,2,3,4,5

SQL Fiddle Demo 1

要么

欲了解更多广义解,使用以下命令:

with t as
(
 select 'abcde' as col from dual 
)
select listagg(substr(col,level,1),',') within group (order by level) as str
   from t
connect by level <= length(col);

STR
---------
a,b,c,d,e

SQL Fiddle Demo 2


5
投票

您可以使用regexp_replace()

rtrim(regexp_replace('12345', '([0-9])', '\1,'), ',')

rtrim()是必要的,因为最后一个数字也被更换。

在线例如:https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=724adecda03305b281ad3bf0f380ca58

© www.soinside.com 2019 - 2024. All rights reserved.