第一种方式
Oracle行转列,将一个字段中存在用逗号隔开的数转换成列展示出来
第一种方式
SELECT pacs_doc, regexp_substr(pacs_doc||‘,’, ‘[^,]+’, 1, rownum) yy
from (select pacs_doc from 表名
WHERE pacs_doc like ‘%,%’
and code= ‘1111111111’
) connect by rownum <= length(pacs_doc) - length(replace(pacs_doc, ‘,’, ‘’))+1

第二种方式
第二种方式(支持oracle 11g,不支持低版本)
SELECT t.apply_id, REGEXP_SUBSTR(t.pacs_doc, ‘[^,]+’, 1, LEVEL) AS mat
FROM 表名 t
where t.code
第三种方式
第三种方式(会出现重复数据)
SELECT DISTINCT REGEXP_SUBSTR(t.pacs_doc, ‘[^,]+’, 1, LEVEL) fkId,
t.apply_id
FROM 表名 t
where t.end_date >= TO_DATE(‘2022-06-01 09:50:51’,‘yyyy-mm-dd hh24:mi:ss’)
AND t.end_date <= TO_DATE(‘2022-06-21 09:50:51’,‘yyyy-mm-dd hh24:mi:ss’)
and state = ‘3’
and t.pacs_doc is not null
CONNECT BY LEVEL <= LENGTH(t.pacs_doc) -
LENGTH(REPLACE(t.pacs_doc, ‘,’, ‘’)) + 1
ORDER BY t.apply_id