问题描述
这是我的字符串/列值:
ReferenceId=678&MobileNo=226789&Pnumber=9878&SIB=121314&.........&PIN=34&....
有很多字段。我对上述领域感兴趣。
如何在SQL Server 2012中分离/获取它们的值? string_split()
功能在2012年不受支持。
解决方法
在此处link创建@Dave建议的UFN_STRING_SPLIT
函数
create FUNCTION [dbo].[UFN_STRING_SPLIT]
(
@List NVARCHAR(MAX),@Delimiter NVARCHAR(255)
)
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN
(
SELECT Item = y.i.value('(./text())[1]','nvarchar(max)')
FROM
(
SELECT x = CONVERT(XML,'<i>'
+ REPLACE(@List,@Delimiter,'</i><i>')
+ '</i>').query('.')
) AS a
CROSS APPLY x.nodes('i') AS y(i)
);
测试您的代码:
select
Left(Item,charindex('=',Item,0) - 1) as FielName,right(Item,len(Item) - charindex('=',0)) as [Value]
from
dbo.UFN_STRING_SPLIT('ReferenceId=678&MobileNo=226789&Pnumber=9878&SIB=121314','&')