gpt4 book ai didi

sql - 使用 SQL 获取和删除查询字符串

转载 作者:搜寻专家 更新时间:2023-10-30 19:41:33 25 4
gpt4 key购买 nike

我正在寻找一个可以在某种意义上获取查询字符串的 SQL 函数,URL 存储在一个变量中。

实际上,我需要创建一个触发器来更新包含 url 的列并对 url 的特定查询字符串进行编码,因此要对该特定查询字符串进行编码,首先我需要提取查询字符串值。

让我们说

@url = 'mypage.php?name=This is test&address=Test Address&phone=+9779854125896'

然后,我需要一个像这样的 SQL 函数

select getURLparams('name', @url)

应该返回

This is test

以及,如何删除特定的查询字符串,以便我可以追加更新后的字符串。

我在 SQL Sever 2008 R2 上。

最佳答案

请尝试以下查询,它返回以查询字符串名称作为参数的查询字符串值:

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

关于sql - 使用 SQL 获取和删除查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18953021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com