提取从逗号分隔字符串字符串的SQL Server中的部分
问题描述:
我在SQL Server中的varchar
字符串:提取从逗号分隔字符串字符串的SQL Server中的部分
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
但它不起作用。
UPDATE:
总的来说,我不想要这个逗号分隔字符串的前两个组成部分,也是我不想用逗号分隔的字符串的最后一部分。
答
select result = stuff(item, 1, charindex(',', item, charindex(',', item) + 1), '')
from
(
-- exclude last item
select item = left(@vStr, len(@vStr) - charindex(',', reverse(@vStr)))
) d
交代
内部查询是exlude的最后一个项目。这是通过使用反转字符串(reverse()),然后查找逗号“,”,然后使用LEFT()来获得左部分到最后一个逗号来完成的。使用外部2 charindex()查询是要找到第二个逗号
- ,然后用东西()
答
可以请你试试这个
select substring(substring (substring(@vStr,1,len(@vStr)),10,len(@vStr)),0,len(@vStr)-14)
+0
您的答案适用于上面给出的两个示例。但是我有很多需要解析的字符串。查看我更新过的一般预期结果。您的此解决方案无法与Select @vStr ='; 1GALQR,20111,19727328849,0,0,0,0,0,0,0,583424:' –
你有混合字母+数字的情况下消除任何了第二个逗号?像ABC123,DEF123? – Squirrel
是@Squirrel ..这是一种可能性 –
通用规则是什么?从带有'+'的第一个字符串到带有'+'的最后一个字符串? –