3

我有一个表列,其中包含带逗号的数据(逗号的数量是固定的)。我想拆分数据并根据逗号提取数据。例如:

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)

4

1 回答 1

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) = ','
于 2013-07-03T06:11:15.023 回答