Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 获取字符间单词的sql查询_Sql Server 2005 - Fatal编程技术网

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)