Sql server 2005 获取字符间单词的sql查询
我有一个问题,我有一个字符串,我需要得到它的一个特定部分 例如:Sql server 2005 获取字符间单词的sql查询,sql-server-2005,Sql Server 2005,我有一个问题,我有一个字符串,我需要得到它的一个特定部分 例如: \Stack\Over\Programming\Users\ 我需要从上面的字符串中进行“编程”。您需要在SQL中创建一个字符串拆分函数。不幸的是,MS SQL中没有内置一个 结果: CHARBegin |Res |RN 1 | \ |1 7 |Stack |2 12 |Over |3 24
\Stack\Over\Programming\Users\
我需要从上面的字符串中进行“编程”。您需要在SQL中创建一个字符串拆分函数。不幸的是,MS SQL中没有内置一个 结果:
CHARBegin |Res |RN
1 | \ |1
7 |Stack |2
12 |Over |3
24 |Programming |4
30 |Users |5
在你的情况下,你需要最后的陈述
SELECT * FROM res WHERE Rn=4
如果它总是介于第三个和第四个
\
之间的单词,那么下面就可以了
DECLARE @String VARCHAR(32)
SET @String = '\Stack\Over\Programming\Users\'
SELECT SUBSTRING(
@String
, CHARINDEX('\', @String, CHARINDEX('\', @String, CHARINDEX('\', @String, 1) + 1) + 1) + 1
, CHARINDEX('\', @String, CHARINDEX('\', @String, CHARINDEX('\', @String, CHARINDEX('\', @String, 1) + 1) + 1) + 1)
- CHARINDEX('\', @String, CHARINDEX('\', @String, CHARINDEX('\', @String, 1) + 1) + 1) - 1)
@列文:非常感谢。这正是我想要的wanted@ramesh-没问题,但Dalex提供的解决方案有一个更好的冷却系数。也可以使用
PARSENAME(替换(子字符串(@String,2,len(@String)-2),“\”,“,”),2)
来增加冷却(但鲁棒性较差!)@Martin,你为什么不从中找出答案,我会投你一票。我能想到的可读性更高、鲁棒性下降的唯一原因是可能会增加“.”字符。
DECLARE @String VARCHAR(32)
SET @String = '\Stack\Over\Programming\Users\'
SELECT SUBSTRING(
@String
, CHARINDEX('\', @String, CHARINDEX('\', @String, CHARINDEX('\', @String, 1) + 1) + 1) + 1
, CHARINDEX('\', @String, CHARINDEX('\', @String, CHARINDEX('\', @String, CHARINDEX('\', @String, 1) + 1) + 1) + 1)
- CHARINDEX('\', @String, CHARINDEX('\', @String, CHARINDEX('\', @String, 1) + 1) + 1) - 1)