hsu*_*suk 3 sql t-sql database sql-server get
我正在寻找一个可以获取查询字符串的SQL函数,URL存储在变量中.
实际上,我需要创建一个触发器,它将更新包含url的列并对url的特定查询字符串进行编码,因此要对该特定查询字符串进行编码,首先我需要提取查询字符串值.
让我们说
@url = 'mypage.php?name=This is test&address=Test Address&phone=+9779854125896'
Run Code Online (Sandbox Code Playgroud)
然后,我需要一个像SQL一样的SQL函数
select getURLparams('name', @url)
Run Code Online (Sandbox Code Playgroud)
应该回来
This is test
Run Code Online (Sandbox Code Playgroud)
并且,如何删除特定的查询字符串,以便我可以附加更新的字符串.
我在SQL Sever 2008 R2上.
请尝试下面的查询,它以querystring name作为参数返回querystring值:
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
Run Code Online (Sandbox Code Playgroud)
要更改现有查询字符串的值,请尝试:
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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3060 次 |
最近记录: |