请尝试以下查询,该查询返回查询字符串值,查询字符串名称作为参数:
declare @url nvarchar(max) = 'mypage.php?name=This is test&address=Test Address&phone=+9779854125896'
declare @param nvarchar(max)='phone'
SELECT
(CASE WHEN CHARINDEX('&', v)>0 THEN SUBSTRING(v, 0, CHARINDEX('&', v))
ELSE V END)
FROM(
SELECT SUBSTRING(@url, CHARINDEX(@param+'=', @url)+LEN(@param)+1, len(@url)) v
WHERE CHARINDEX('&'+@param+'=', REPLACE(@url, '?', '&'))>0
)x
要更改现有查询字符串的值,请尝试:
declare @url nvarchar(max) = 'mypage.php?name=This is test&address=Test Address&phone=+9779854125896'
declare @param nvarchar(max)='name'
declare @NewValu nvarchar(max)='Test'
SELECT
REPLACE(@url, Ch+vv, Ch+@NewValu)
FROM(
SELECT
(CASE WHEN CHARINDEX('&', v)>0 then SUBSTRING(v, 0, CHARINDEX('&', v))
ELSE V END) vv,
(CASE WHEN CHARINDEX('?'+@param+'=', @url)>0
THEN '?'+@param+'='
ELSE '&'+@param+'=' END) Ch
FROM(
SELECT SUBSTRING(@url, CHARINDEX(@param+'=', @url)+LEN(@param)+1, len(@url)) v
WHERE CHARINDEX('&'+@param+'=', REPLACE(@url, '?', '&'))>0
)x
)xx