在第五名的列中提取子字符串-SQL Server

问题描述

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

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

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

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

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