我试图在SQL查询中获取第三+和第四+之间的字符串
示例来自string =="'Secondary - WA/010 - 8104 + R + VET + 14.10.2022 - must'">
我需要最终答案作为VET,拿起第二个+和第三个+之后的任何东西
你可以这样尝试:
Declare @text varchar(100) = 'Secondary - WA / 010 - 8104 + R + VET + 14.10.2022 - must'
Declare @2nd int
Declare @3rd int
Select @2nd = charindex('+',@text,charindex('+',@text)+1)
Select @3rd = charindex('+',@text,@2nd+1)
Select Substring(@text, @2nd+1, @3rd-@2nd-1)
小提琴演示
要在Microsoft SQL Server中提取给定字符串中的第三个和第四个+字符之间的字符串,您可以使用SUBSTRING和CHARINDEX函数,如下所示:
DECLARE @string VARCHAR(100) = 'Secondary - WA / 010 - 8104 + R + VET + 14.10.2022 - must';
SELECT SUBSTRING(@string, CHARINDEX('+', @string, CHARINDEX('+', @string, CHARINDEX('+', @string) + 1) + 1) + 1, CHARINDEX('+', @string, CHARINDEX('+', @string, CHARINDEX('+', @string) + 1) + 1) - CHARINDEX('+', @string, CHARINDEX('+', @string, CHARINDEX('+', @string) + 1) - 1) AS result;
CHARINDEX函数用于查找字符串中+字符的位置。然后使用SUBSTRING函数提取第三个和第四个+字符之间的子字符串。
这将返回结果VET。
注意,这种方法假设字符串总是包含至少四个+字符。如果字符串没有包含足够的+字符,则查询可能返回错误或意外结果。
我想到要实现它的唯一方法是使用PL/SQL,您可以使用函数INSTR来查找第n个'+'或任何字符的索引,然后使用输入字符串和两个字符的索引的SUBSTRING函数来获得您想要的字符串。下面是一个例子:
SET SERVEROUT ON;
DECLARE
string VARCHAR(100) := 'Secondary - WA / 010 - 8104 + R + VET + 14.10.2022 - must';
fist INTEGER;
last INTEGER;
BEGIN
first := INSTR(string, '+', 1, 2);
last := INSTR(string, '+', 1, 3);
DBMS_OUTPUT.PUT_LINE(SUBSTR(string, first, last - first));
END;