oracle存储过程中怎么做逗号分隔?

孙月魂 2014-11-09 12:35:09
现在我要select a from t
这个a列中既有1也有1,2,3这样用逗号分隔的数
现在我要把这些不管有用逗号分隔还是没有的都作为一个单独的字段加入一个游标或者数组做循环之用
要怎么办?
...全文
224 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bw555 2014-11-09
  • 打赏
  • 举报
回复
引用 1 楼 zlloct 的回复:
[quote=引用 楼主 speak13579 的回复:]
以下的SQL是分隔A中的数字
select rn
       REGEXP_SUBSTR(a, '[^,]+', 1, LEVEL) STR
  from (select a,rownum rn from t)
CONNECT BY LEVEL <= REGEXP_COUNT( a, ',') + 1
       and rn= prior rn
       and prior dbms_random.value is not null;
注意:regexp_count在11g以后才能使用,如果是11g以前需换成 length(a)-length(replace(a,',',''))[/quote] 正解,但是发现你select rn后少了个逗号,嘻嘻
CT_LXL 2014-11-09
  • 打赏
  • 举报
回复
引用 2 楼 speak13579 的回复:
可以, 会根据逗号的个数来进行分隔。 你可以试试
孙月魂 2014-11-09
  • 打赏
  • 举报
回复
引用 1 楼 zlloct 的回复:
[quote=引用 楼主 speak13579 的回复:]
以下的SQL是分隔A中的数字
select rn
       REGEXP_SUBSTR(a, '[^,]+', 1, LEVEL) STR
  from (select a,rownum rn from t)
CONNECT BY LEVEL <= REGEXP_COUNT( a, ',') + 1
       and rn= prior rn
       and prior dbms_random.value is not null;
注意:regexp_count在11g以后才能使用,如果是11g以前需换成 length(a)-length(replace(a,',',''))[/quote] 这个如果不是单个的数字而是一长串用逗号分隔的电话号码也可以吗?
CT_LXL 2014-11-09
  • 打赏
  • 举报
回复
引用 楼主 speak13579 的回复:
以下的SQL是分隔A中的数字
select rn
       REGEXP_SUBSTR(a, '[^,]+', 1, LEVEL) STR
  from (select a,rownum rn from t)
CONNECT BY LEVEL <= REGEXP_COUNT( a, ',') + 1
       and rn= prior rn
       and prior dbms_random.value is not null;
注意:regexp_count在11g以后才能使用,如果是11g以前需换成 length(a)-length(replace(a,',',''))

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧