SQL Server 选取第n次出现的+和第n +1次出现的+ SQL之间的字符串[重复]

jv2fixgn  于 2022-12-26  发布在  其他
关注(0)|答案(3)|浏览(170)
    • 此问题在此处已有答案**:

Using T-SQL, return nth delimited element from a string(14个答案)
2天前关闭。
我尝试在SQL查询中提取第三个+和第四个+之间的字符串
示例来自字符串== "'二级-WA/010 - 8104 + R + VET +14.10.2022-必须'"
我需要最终的答案作为兽医,拿起任何后第二+和第三+

ajsxfq5m

ajsxfq5m1#

你可以这样尝试:

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)

小提琴演示

wbgh16ku

wbgh16ku2#

若要在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。
请注意,此方法假定字符串始终至少包含四个+字符。如果字符串包含的+字符不足,查询可能会返回错误或意外结果。

gmol1639

gmol16393#

我想到的实现它的唯一方法是使用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;

相关问题