我在SQL Server中有一个varchar
字符串:
DECLARE @vStr VARCHAR(MAX) = ';ABC,DEF,+123456789,+987654321,0,0,0,0,0,+987654321,1110:'
对于这个字符串,我想要结果如:
'+123456789,+987654321,0,0,0,0,0,+987654321'
DECLARE @vStr VARCHAR(MAX) = ';PQR,XYZ,+987654321,+987654321,0,0,0,0,0,+9876123456,5555:'
应生成如下结果:+987654321,+987654321,0,0,0,0,0,+9876123456
我正在使用substring
和left
尝试len
,但它无效。
更新
一般来说,我不想要这个逗号分隔字符串的前两部分,而且我也不想要逗号分隔字符串的最后部分。
答案 0 :(得分:3)
select result = stuff(item, 1, charindex(',', item, charindex(',', item) + 1), '')
from
(
-- exclude last item
select item = left(@vStr, len(@vStr) - charindex(',', reverse(@vStr)))
) d
的解释
内部查询是排除最后一项。这是通过使用反转字符串(reverse())然后找到逗号","来完成的。然后使用LEFT()将左侧部分放到最后一个逗号
外部查询的2个charindex()是找到第二个逗号
答案 1 :(得分:0)
你可以试试这个吗
select substring( substring (substring(@vStr,1,len(@vStr)),10,len(@vStr)),0,len(@vStr)-14 )