我有一个表,其中第 1 列包含 01.02.2001;16.07.2003;25.08.2005 等属于 ID = 1 的人的值,看起来像这样
人员_ID | 第_1栏 |
---|---|
1 | 2001年2月1日;2003年7月16日;2005年8月25日 |
这是用 ; 分隔的 3 个日期
我想将日期分成 3 行,这样所有的日期仍然会有 ID 为 1 的人
这就是我想要的最终结果:
人员_ID | 第_1栏 |
---|---|
1 | 2001年2月1日 |
1 | 2003年7月16日 |
1 | 2005年8月25日 |
我尝试了 CROSS APPLY STRING_SPLIT(Column_1, ';') 但它没有给出预期的结果。
WITH cte (Person_ID, Column_1) AS (
SELECT 1, '01.02.2001;16.07.2003;25.08.2005'
)
SELECT cte.Person_ID, jsontable.Column_1
FROM cte
CROSS JOIN JSON_TABLE(CONCAT('["', REPLACE(cte.Column_1, ';', '","'), '"]'),
'$[*]' COLUMNS (Column_1 VARCHAR(255) PATH '$')) jsontable;
人员_ID | 第_1栏 |
---|---|
1 | 2001年2月1日 |
1 | 2003年7月16日 |
1 | 2005年8月25日 |