将字符串列转换为字符行

-1 sql sql-server azure-sql-database

我有一个包含以下数据的表:

ID 价值
1 P126

我需要将此表转换为

ID 价值
1
2 1
3 2
4 6

我试过STRING_SPLIT,但它不适用于空分隔符。

有人可以帮我格式化数据吗?

Tyr*_*n78 8

您可以使用递归 cte 解决此问题:

DECLARE @t nvarchar(10) = 'P126';

WITH cte AS (
SELECT 1 id, LEFT(@t, 1) col, RIGHT(@t, LEN(@t)-1) txt
UNION ALL
SELECT id+1, LEFT(txt, 1), RIGHT(txt, LEN(txt)-1)
  FROM cte
  WHERE LEN(txt) >= 1
)
SELECT id, col
  FROM cte
Run Code Online (Sandbox Code Playgroud)