我有一个名为'响应'其中包含大量有关某人的数据。
我只希望在特定字符串后返回信息
但是,使用下面的方法我有时(当人们有<100智商)得到|直接来自所需的号码..
我喜欢“PersonIQ =&#39;之后的任何字符”。但只是在管道之前。
我不确定实现这一目标的最佳方法。
查询速度是一个问题,我对嵌套CASE的想法可能不是最佳解决方案。
任何建议表示赞赏。感谢
substring(response,(charindex('PersonIQ=',response)+9),3)
答案 0 :(得分:0)
假设总是有管道,你可以这样做:
spring-security-web
或者,您可以将字符串转换为xml并直接引用PersonIQ,例如:
substring(stuff(reponse,1,charindex('PersonIQ=',reponse)-1,''),1,charindex('|',stuff(reponse,1,charindex('PersonIQ=',reponse)-1,''))-1)
答案 1 :(得分:0)
这是我的建议:
declare @s varchar(200) = 'aaa=bbb|cc=d|PersonIQ=99|e=f|1=2'
declare @iq varchar(10) = 'PersonIQ='
declare @pipe varchar(1) = '|'
select substring(@s,
charindex(@iq, @s) + len(@iq),
charindex(@pipe, @s, charindex(@iq, @s)) - (charindex(@iq, @s) + len(@iq))
)
您应该使用公式3
的最后一部分来计算@iq和@pipe之间的空间,而不是公式中的charindex(@pipe, @s, charindex(@iq, @s)) - (charindex(@iq, @s) + len(@iq))
,它会获得@iq之后的第一个@pipe索引,并且然后逐步构造IQ值的索引。