declare @v varchar(max) = '1,11,111,1111'
我需要这样的输出(在单独的行中):
1
11
111
1111
我可以使用第一个和最后一个:
select Substring(@v,0,CharIndex(',',@v))
select substring(@v, CHARINDEX(',', @v, CHARINDEX(',', @v, CHARINDEX(',', @v)+1)+1)+1, len(@v))
但是,如何分别获得第二个和第三个子串?
答案 0 :(得分:1)
您可以使用替换...
declare @v varchar(max) = '1,11,111,1111'
select replace(@v,',',' ')
如果您正在寻找多行,那么
--For SQL Server >= 2016
select * from string_split(@v,',')
--For any version of sql server
DECLARE @xml as xml
SET @xml = cast(('<X>'+replace(@v,',' ,'</X><X>')+'</X>') as xml)
SELECT N.value('.', 'varchar(MAX)') as value FROM @xml.nodes('X') as T(N)