在MS SQL中使用所需条件拆分特定列中的数据(文本)

时间:2013-07-03 06:05:15

标签: sql-server split

我有一个包含逗号数据的表列(修复了逗号的数量)。 我想分割数据并根据逗号提取数据。 例如:

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)

1 个答案:

答案 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) = ','