【问题标题】:How to get second, third and more values from string with fields separated by commas? [duplicate]如何从以逗号分隔的字段的字符串中获取第二个、第三个和更多值? [复制]
【发布时间】:2017-10-04 10:16:37
【问题描述】:
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)) 

但是,我怎样才能分别得到第二个和第三个子字符串呢?

【问题讨论】:

    标签: sql substring


    【解决方案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)
    

    【讨论】:

    • 实际上我需要像第一行1,第二行11,第三行111,第四行1111这样的输出
    • 哪个版本的sql server?
    • sql server 2012
    • 感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    相关资源
    最近更新 更多