Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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 是否有一个基于搜索单词来选择字符串特定部分的函数?_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 是否有一个基于搜索单词来选择字符串特定部分的函数?

Sql 是否有一个基于搜索单词来选择字符串特定部分的函数?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我试图从字段中始终存在的特定单词开始选择字符串的一部分 因此,这里有一个字段的示例: “仅限管理员使用-企业:人力资源:测试-历史记录” 我只想捕获文件路径,即“企业:人力资源:测试” 例如: SELECT SUBSTRING('Admin use only - Enterprise:Human Resources:Test - History', 17, 32) AS ExtractString; Result = Enterprise:Human Resources:Test 这个s

我试图从字段中始终存在的特定单词开始选择字符串的一部分

因此,这里有一个字段的示例: “仅限管理员使用-企业:人力资源:测试-历史记录”

我只想捕获文件路径,即“企业:人力资源:测试”

例如:

SELECT SUBSTRING('Admin use only - Enterprise:Human Resources:Test - 
History', 17, 32) AS ExtractString;

Result = Enterprise:Human Resources:Test 

这个select语句的问题是,它只适用于这个特定的示例,因为子字符串的开始和长度可能会发生变化

您需要使用charindex

SELECT SUBSTRING('Admin use only - Enterprise:Human Resources:Test - History',
CHARINDEX('-','Admin use only - Enterprise:Human Resources:Test - History')+1, 
CHARINDEX('-','Admin use only - Enterprise:Human Resources:Test - History',CHARINDEX('-','Admin use only - Enterprise:Human Resources:Test - History')+1) -CHARINDEX('-','Admin use only - Enterprise:Human Resources:Test - History')-1) 

所以,您想捕获“-”和“-”之间的所有内容?您使用的是什么DB品牌?使用Microsoft SQL Server Skye,我下面的答案应该可以解决您的问题。如果答案是正确的,请接受!您应该展示给出错误结果的示例