提问人:Rae Christian Meron 提问时间:8/23/2023 最后编辑:jarlhRae Christian Meron 更新时间:8/23/2023 访问量:69
获取第 3 和第 5 个空格之间的字符串 [closed]
Get string between 3rd and 5th space [closed]
问:
我正在尝试提取值的第 3 个和第 5 个空格之间的字符串。例如,如果字符串为:
1588 Exeter Rd, Lebanon, CT 06249, United States
我想提取的是:
Lebanon, CT
我一直在摆弄我在网上找到的一些解决方案,但看起来我错过了一些东西。例如,对于以下查询:
SUBSTRING([@field:GPS], (CHARINDEX(' ', [@field:GPS],
CHARINDEX(' ', [@field:GPS],
CHARINDEX(' ',[@field:GPS])
+1 )+1)+1),
CHARINDEX(' ', [@field:GPS],
CHARINDEX(' ', [@field:GPS],
CHARINDEX(' ', [@field:GPS],
CHARINDEX(' ', [@field:GPS],
CHARINDEX(' ',[@field:GPS])+1 )+1 )+1 )+1)+1)
它返回:Lebanon, CT 06249, United Sta
答:
-3赞
Joaquin
8/23/2023
#1
查询几乎是正确的,但似乎提取了太多的字符串。您需要计算要提取的子字符串的长度,而不仅仅是找到第 5 个空格的位置。
下面是一个可能有效的修改后的查询:
SUBSTRING([@field:GPS],
CHARINDEX(' ', [@field:GPS], CHARINDEX(' ', [@field:GPS], CHARINDEX(' ', [@field:GPS]) + 1) + 1) + 1,
CHARINDEX(' ', [@field:GPS], CHARINDEX(' ', [@field:GPS], CHARINDEX(' ', [@field:GPS], CHARINDEX(' ', [@field:GPS], CHARINDEX(' ', [@field:GPS]) + 1) + 1) + 1) + 1) -
CHARINDEX(' ', [@field:GPS], CHARINDEX(' ', [@field:GPS], CHARINDEX(' ', [@field:GPS]) + 1) + 1) - 1
)
此查询通过从第 5 个空格的位置中减去第 3 个空格的位置,然后再减去一个以排除空格本身来计算子字符串的长度。
上一个:获取数据替换大括号之间的文本()
评论