Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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/symfony/6.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 选择长字符串中两个单词之间的子字符串_Sql Server - Fatal编程技术网

Sql server 选择长字符串中两个单词之间的子字符串

Sql server 选择长字符串中两个单词之间的子字符串,sql-server,Sql Server,我有一个表,其中有一个名为“HL7_MESSAGE”的大字符串列,我需要从几个关键字中提取一个字符串,如下面的代码所示。我是一个Oracle人员,所以代码是用Oracle SQL编写和工作的,但我需要将其转换为SQL server代码。SQL server没有Regexp\u substr函数,但我无法使用charindex或Patindex实现这一点。基本上,我在两个字符串之间选择一个字符串,并在decode语句中查找两个单词/部分之间是否缺少数据。如果它只找到“.br\”,则它缺少数据,我只

我有一个表,其中有一个名为“HL7_MESSAGE”的大字符串列,我需要从几个关键字中提取一个字符串,如下面的代码所示。我是一个Oracle人员,所以代码是用Oracle SQL编写和工作的,但我需要将其转换为SQL server代码。SQL server没有Regexp\u substr函数,但我无法使用charindex或Patindex实现这一点。基本上,我在两个字符串之间选择一个字符串,并在decode语句中查找两个单词/部分之间是否缺少数据。如果它只找到“.br\”,则它缺少数据,我只是标记缺少或已填充。无论如何,代码如下……如果有人能将其解码为SQL server 2011版,我将不胜感激

代码:


感谢

我在下面提供了一个使用patindex和substring从两个其他字符串之间的字符串中提取信息的快速示例,希望这将作为您进行转换的基础

DECLARE @a varchar(300) = 'this is a long string I will extract data from'

PRINT SUBSTRING(@a, PATINDEX('% long %', @a) + LEN('% long %')-2, PATINDEX('% extract %', @a) - (PATINDEX('% long %', @a) + LEN('% long %')-2))
关键在于使用两种patindex模式来确定起点和长度:

首先查找第一个字符串模式的结尾(Patindex查找开始,len-2查找结束):

然后,要查找长度,请使用Patindex查找第二个字符串的起点,然后减去上面找到的起点

Patindex(pattern, string) - (Patindex(start pattern, string) + LEN(start pattern, string) - 2 )

我希望这会有所帮助。

叙述会有所帮助,但样本数据和预期结果会更有帮助。
Patindex(pattern, string) + LEN(pattern, string) - 2 
Patindex(pattern, string) - (Patindex(start pattern, string) + LEN(start pattern, string) - 2 )