我有一个包含逗号数据的表列(修复了逗号的数量)。 我想分割数据并根据逗号提取数据。 例如:
Select column_name From table->
->column_name
->adc,efg,ghi,ijk
我想提取用逗号分隔的每个文本(直到最后一个文本)。 例如,我需要:
1)adc
2)efg
3)ghi
4)ijk
我发现它在PostGre中完成,但在MS-SQL中找不到。 我PostGre给出了以下代码:
select a[1], a[2], a[3], a[4], a[5], a[6]
from (
select regexp_split_to_array(column_name, ',')
from your_table
)作为dt(a)
答案 0 :(得分:2)
试试这个 -
DECLARE @temp TABLE (id NVARCHAR(50))
INSERT INTO @temp (id)
VALUES ('adc,efg,ghi,ijk')
SELECT id = ROW_NUMBER() OVER (PARTITION BY t.string ORDER BY 1/0)
, name =
SUBSTRING(
t.string
, n.number + 1
, ABS(CHARINDEX(',', t.string, n.number + 1) - n.number - 1))
FROM (
SELECT string = ',' + t.id
FROM @temp t
) t
CROSS JOIN [master].dbo.spt_values n
WHERE n.[type] = 'p'
AND n.number <= LEN(t.string)
AND SUBSTRING(t.string, n.number, 1) = ','