gpt4 book ai didi

sql-server - 在 SQL Server 2005 中解析 QueryString

转载 作者:行者123 更新时间:2023-12-01 16:30:16 24 4
gpt4 key购买 nike

有没有一种简单的方法可以在 SQL Server 中解析 QueryString 参数(例如 foo=bar&temp=baz)?

我最终需要的是一个包含名称/值对的“表”。

| foo  | bar |
| temp | baz |

虽然在上面的示例中它会很简单,但如果字符串开始包含转义字符(例如 %3D),则变得更难,而当涉及 UTF-8 时甚至更难。

有什么现成的解决方案吗? SQL Server 的 URLDecode 实现将是人间天堂。

最佳答案

因此,要解析查询字符串,只需在函数中使用 CTE。这是代码。

CREATE FUNCTION dbo.SplitQueryString (@s varchar(8000))
RETURNS table
AS
RETURN (
WITH splitter_cte AS (
SELECT CHARINDEX('&', @s) as pos, 0 as lastPos
UNION ALL
SELECT CHARINDEX('&', @s, pos + 1), pos
FROM splitter_cte
WHERE pos > 0
),
pair_cte AS (
SELECT chunk,
CHARINDEX('=', chunk) as pos
FROM (
SELECT SUBSTRING(@s, lastPos + 1,
case when pos = 0 then 80000
else pos - lastPos -1 end) as chunk
FROM splitter_cte) as t1
)
SELECT substring(chunk, 0, pos) as keyName,
substring(chunk, pos+1, 8000) as keyValue
FROM pair_cte
)
GO

declare @queryString varchar(2048)
set @queryString = 'foo=bar&temp=baz&key=value';
SELECT *
FROM dbo.SplitQueryString(@queryString)
OPTION(MAXRECURSION 0);

运行时产生以下输出。

keyName  keyValue
------- --------
foo bar
temp baz
key value
(3 row(s) affected)

我相信这会完全满足您的要求。

关于sql-server - 在 SQL Server 2005 中解析 QueryString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8986150/

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