SELECT t.value,
v.COLUMN_VALUE AS item
FROM table_name t
CROSS JOIN TABLE(
CAST(
MULTISET(
SELECT REGEXP_SUBSTR( t.value, '[^,]+', 1, LEVEL )
FROM DUAL
CONNECT BY REGEXP_SUBSTR( t.value, '[^,]+', 1, LEVEL ) IS NOT NULL
)
AS SYS.ODCIVARCHAR2LIST
)
) v
对于样本数据:
CREATE TABLE TABLE_NAME ( value ) AS
SELECT 'a,b,c,d,e' FROM DUAL;
1条答案
按热度按时间3qpi33ja1#
对于SQLServer和oracle,您找不到一个查询可以同时执行此操作,因为除其他许多原因外,它们的字符串解析函数具有不同的名称。
对于甲骨文来说,这个问题有很多解决方案;然而,它们大多不会在oracle10g上工作,因为它们依赖于11g或12c中引入的改进。这个答案应该能够适应[希望]使它在oracle10g中工作(但我没有地方测试它,因为oracle10g现在非常旧,您应该真的希望升级到一个更新的版本):
对于样本数据:
输出:
价值项目A、b、c、d、eaa、b、c、d、eba、b、c、d、eca、b、c、d、eda、b、c、d、ee
db<>在这里摆弄