SQL Server 2005 - 如何 select 字符串的特定部分?
SQL Server 2005 - how can I select a specific part of a string?
我有字符串 &string=45646874&v1=67&v2=test 并且我想从中获取字符串 45646874 有时这个提取将有 8 个字符,有时 7 有时 5 等
所以我需要在 &string=45646874&v1=67&v2=test 中搜索并获取 string= 之后和下一个之前的所有内容&
SQL 服务器没有任何内置的正则表达式提取支持,但我们可以使用基本字符串函数处理这个问题,如下所示:
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;
你可以试试这个查询
DECLARE @String varchar(100)= '&string=45646874&v1=67&v2=test'
SELECT SUBSTRING(@string,(CHARINDEX('string=',@string)+7),(CHARINDEX('&',@string,2)-(CHARINDEX('string=',@string)+7)))
我有字符串 &string=45646874&v1=67&v2=test 并且我想从中获取字符串 45646874 有时这个提取将有 8 个字符,有时 7 有时 5 等
所以我需要在 &string=45646874&v1=67&v2=test 中搜索并获取 string= 之后和下一个之前的所有内容&
SQL 服务器没有任何内置的正则表达式提取支持,但我们可以使用基本字符串函数处理这个问题,如下所示:
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;
你可以试试这个查询
DECLARE @String varchar(100)= '&string=45646874&v1=67&v2=test'
SELECT SUBSTRING(@string,(CHARINDEX('string=',@string)+7),(CHARINDEX('&',@string,2)-(CHARINDEX('string=',@string)+7)))