【问题标题】:Extract a substring in a column in the 5th place - SQL Server在第 5 位的列中提取子字符串 - SQL Server
【发布时间】:2020-10-21 15:24:30
【问题描述】:

如何提取出现在 4 ';' 之后的字符串使用选择查询在表的列中?

例如 - 如果 U 在列中有以下值:

1234;0000;567;655;0541234567;777;777

我想获取第 5 位的值;在这个例子中是

0541234567

谢谢!

【问题讨论】:

    标签: sql-server string select text-extraction


    【解决方案1】:

    你可以使用一点 JSON

    示例

    Declare @YourTable table (SomeCol varchar(100))
    Insert into @YourTable values ('1234;0000;567;655;0541234567;777;777')
    
    
    Select A.SomeCol
          ,Val5 = JSON_VALUE(S,'$[4]')
     from @YourTable A
     Cross Apply ( values ( '["'+replace(SomeCol,';','","')+'"]' ) ) B(S)
    

    退货

    SomeCol                                 Val5
    1234;0000;567;655;0541234567;777;777    0541234567
    

    编辑——如果只在一个值之后,则不需要交叉应用

    Select A.SomeCol
          ,Val5 = JSON_VALUE('["'+replace(SomeCol,';','","')+'"]','$[4]')
     from @YourTable A
    

    【讨论】:

    • 你能解释一下这里发生了什么吗?
    • @FriendlyManCub CROSS APPLY 会将您的分隔字符串转换为 JSON 数组。然后我们简单地抓取适当的索引值。需要明确的是,{at}Yourtable 只是一个演示表变量。另外,如果你不是 2016+,也有类似的 XML 方法
    猜你喜欢
    • 2017-12-10
    • 2023-03-14
    • 2020-05-27
    • 2020-10-15
    • 2016-11-24
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 2012-05-03
    相关资源
    最近更新 更多