Sql server 提取列中第5位的子字符串-SQL Server

Sql server 提取列中第5位的子字符串-SQL Server,sql-server,string,select,text-extraction,Sql Server,String,Select,Text Extraction,如何提取出现在4';'之后的字符串在使用select查询的表中的列中 例如-如果U在列中具有以下值: 1234;0000;567;655;0541234567;777;777 我想取第五位的值;在这个例子中,它是 0541234567 谢谢 您可以使用一点JSON 示例 Declare @YourTable table (SomeCol varchar(100)) Insert into @YourTable values ('1234;0000;567;655;0541234567;777

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

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

1234;0000;567;655;0541234567;777;777
我想取第五位的值;在这个例子中,它是

0541234567

谢谢

您可以使用一点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交叉应用程序将把你的分隔字符串转换成JSON数组。然后我们简单地获取适当的索引值。清楚地说,{at}Yourtable只是一个指示表变量。此外,如果您不是2016+,也有类似的XML方法