我有一张有主键的表。问题是这个主键有时候是一个由逗号分隔的唯一ID列表(例如:1,2,3)。
我想在该表上执行SELECT,但我希望每行看到一个ID。这是一个更直观的例子!
表格中的数据:
1,2,3 Info1 Info2
我想要SELECT查询输出:
1 Info1 Info2
2 Info1 Info2
3 Info1 Info2
答案 0 :(得分:0)
假设这是Oracle:
WITH CTE
AS (SELECT
'1,2,3' AS COL1,
'Info1' AS COL2,
'Info2' AS COL3
FROM
DUAL)
SELECT
REGEXP_SUBSTR ( COL1,
'[^,]+',
1,
RN )
COL1,
COL2,
COL3
FROM
CTE
CROSS JOIN
(SELECT
ROWNUM RN
FROM
(SELECT
MAX ( LENGTH ( REGEXP_REPLACE ( COL1,
'[^,]+' ) ) )
+ 1
MAX_L
FROM
CTE)
CONNECT BY
LEVEL <= MAX_L)
WHERE
REGEXP_SUBSTR ( COL1,
'[^,]+',
1,
RN )
IS NOT NULL
ORDER BY
COL1;
<强>结果:强>
1 Info1 Info2
2 Info1 Info2
3 Info1 Info2