在包含列表的字段上选择QUERY

时间:2013-11-08 15:16:01

标签: sql ms-access

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

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

我想在该表上执行SELECT,但我希望每行看到一个ID。这是一个更直观的例子!

表格中的数据:

1,2,3     Info1       Info2

我想要SELECT查询输出:

1     Info1     Info2
2     Info1     Info2
3     Info1     Info2

1 个答案:

答案 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