SQL Server 2005 - 如何选择字符串的特定部分?

时间:2017-12-14 11:05:26

标签: sql sql-server-2005

我有字符串& string = 45646874& v1 = 67& v2 = test ,我想抓住字符串 45646874 ,有时这个提取将会 8 字符有时 7 有时 5 等。

所以我需要搜索& string = 45646874& v1 = 67& v2 = test 并抓住 string = 之后和下一个&安培;

2 个答案:

答案 0 :(得分:2)

SQL Server没有任何内置的正则表达式提取支持,但是我们可以使用基本字符串函数来处理它,如下所示:

WITH cte AS (
    SELECT '&string=45646874&v1=67&v2=test' AS col UNION ALL
    SELECT 'blah blah &string=ABCDEF123&v1=hello&v2=goodbye'
)

SELECT
    SUBSTRING(col, CHARINDEX('&string=', col) + 8,
              CHARINDEX('&', col, CHARINDEX('&string=', col) + 1) -
              CHARINDEX('&string=', col) - 8) AS output
FROM cte;

enter image description here

Demo

答案 1 :(得分:0)

您可以尝试此查询

DECLARE @String varchar(100)= '&string=45646874&v1=67&v2=test'
SELECT SUBSTRING(@string,(CHARINDEX('string=',@string)+7),(CHARINDEX('&',@string,2)-(CHARINDEX('string=',@string)+7)))