0

像往常一样,这是一个非常简单的问题。

我有一个有主键的表。问题是这个主键有时是一个由逗号分隔的唯一 ID 列表(例如:1、2、3)。

我想对该表执行 SELECT,但我想每行查看一个 ID。这是一个更直观的简单示例!

表中数据:

1,2,3     Info1       Info2

我想要 SELECT 查询输出:

1     Info1     Info2
2     Info1     Info2
3     Info1     Info2
4

1 回答 1

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
于 2013-11-08T15:32:23.670 回答