拆分字符串并将结果输出到包含2个字段的表中

时间:2018-04-26 17:45:50

标签: sql sql-server tsql

在SQL Server中,我想从表中拆分字符串字段,我的数据如下:

例如:

Select field1 
from table1;

输出:

s1,t1 1,a 2,b 3,c 4,d

分割此字符串后,我希望输出为包含2列的表:

s1 t1
-----
1  a
2  b
3  c
4  d

我刚刚意识到,我也可以使用这种输出,如果有任何潜在客户请分享。

S1,T1

1,a
2,b
3,c
4,d

2 个答案:

答案 0 :(得分:1)

这是一种使用Jeff Moden的DelimitedSplit8K获取分隔值集的方法。它超级快。 http://www.sqlservercentral.com/articles/Tally+Table/72993/

注意我在这里使用表变量。你会想要使用你的实际表格。

declare @table1 table
(
    field1 varchar(1000)
)

insert @table1
select 's1,t1 1,a 2,b 3,c 4,d'
;

select max(case when ColumnValues.ItemNumber = 1 then ColumnValues.Item end)
    , max(case when ColumnValues.ItemNumber = 2 then ColumnValues.Item end)
from @table1 t
cross apply dbo.DelimitedSplit8K(t.field1, ' ') GroupedValues
cross apply dbo.DelimitedSplit8K(GroupedValues.Item, ',') ColumnValues
group by GroupedValues.ItemNumber

这将返回:

s1  t1
1   a
2   b
3   c
4   d

答案 1 :(得分:0)

您可以使用 STRING_SPLIT 获取所需的输出...

    SELECT DISTINCT 
            LEFT(s.value,CHARINDEX(',')-1 AS s1,
            SUBSTRING(s.value,CHARINDEX(',')+1,LEN(s.value)) AS t1
    FROM table1 AS t
    CROSS APPLY STRING_SPLIT(t.field1, ' ') AD s