在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
答案 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