最近要导个oracle的数据,其中一个值是用逗号分隔的方式将id列表保存在一个字段中,研究了半天才搞定。简单分享下:
SELECT
id, REGEXP_SUBSTR (desc, '[^,]+', 1, lv) desc
FROM
table1 a,
(
SELECT
LEVEL lv
FROM
dual CONNECT BY LEVEL < 10
) b
WHERE b.lv <= REGEXP_COUNT (a.desc, '\,') + 1
ORDER BY id
可以将如下格式(A)转为(B)
A: id desc
1 12,23,24
B:id desc
1 12
1 23
1 24
那么如何将多行转为逗号分隔呢?可以用 wm_concat
如:select id,wm_concat(desc) from table1 group by id