我正在尝试在空格分隔符上拆分SQL中的字符串。空格数会发生变化,因此可以有4或5列的值。我正在尝试使用CHARINDEX
和SUBSTRING
,但无法通过第一个分隔符。
示例:
输入为'444 Addison Avenue SA 5222'
答案 0 :(得分:3)
要拆分成列,您可以使用一个小的XML与CROSS APPLY
一起使用示例强>
Declare @YourTable Table ([SomeCol] varchar(50))
Insert Into @YourTable Values
('444 Addison Avenue SA 5222')
,('1 Washington Square')
Select A.*
,B.*
From @YourTable A
Cross Apply (
Select Pos1 = ltrim(rtrim(xDim.value('/x[1]','varchar(max)')))
,Pos2 = ltrim(rtrim(xDim.value('/x[2]','varchar(max)')))
,Pos3 = ltrim(rtrim(xDim.value('/x[3]','varchar(max)')))
,Pos4 = ltrim(rtrim(xDim.value('/x[4]','varchar(max)')))
,Pos5 = ltrim(rtrim(xDim.value('/x[5]','varchar(max)')))
,Pos6 = ltrim(rtrim(xDim.value('/x[6]','varchar(max)')))
From (Select Cast('<x>' + replace((Select replace([SomeCol],' ','§§Split§§') as [*] For XML Path('')),'§§Split§§','</x><x>')+'</x>' as xml) as xDim) as A
) B
<强>返回强>
答案 1 :(得分:0)