在 T-SQL 中解析 URL 参数可以通过字符串处理函数来实现。假设你有一个包含 URL 的表,并且你想提取特定的查询参数。以下是一个示例,展示如何解析 URL 参数。
假设我们有一个表 Urls
,其中有一列 Url
存储了 URL 字符串:
CREATE TABLE Urls (
Id INT PRIMARY KEY,
Url NVARCHAR(MAX)
);
INSERT INTO Urls (Id, Url) VALUES
(1, 'http://example.com/page?param1=value1¶m2=value2'),
(2, 'http://example.com/page?param1=value3¶m3=value4');
我们想要从 URL 中提取 param1
的值。可以使用以下 T-SQL 查询来实现:
WITH ParsedUrls AS (
SELECT
Id,
Url,
-- 提取 '?' 后的部分
SUBSTRING(Url, CHARINDEX('?', Url) + 1, LEN(Url)) AS QueryString
FROM
Urls
WHERE
CHARINDEX('?', Url) > 0
),
KeyValuePairs AS (
SELECT
Id,
QueryString,
-- 将查询字符串按 '&' 分割成多行
value AS KeyValue
FROM
ParsedUrls
CROSS APPLY STRING_SPLIT(QueryString, '&')
),
ParsedParams AS (
SELECT
Id,
KeyValue,
-- 将每个键值对按 '=' 分割
LEFT(KeyValue, CHARINDEX('=', KeyValue) - 1) AS ParamName,
RIGHT(KeyValue, LEN(KeyValue) - CHARINDEX('=', KeyValue)) AS ParamValue
FROM
KeyValuePairs
WHERE
CHARINDEX('=', KeyValue) > 0
)
SELECT
Id,
ParamName,
ParamValue
FROM
ParsedParams
WHERE
ParamName = 'param1';
?
后面的内容)。STRING_SPLIT
函数将查询字符串按 &
分割成多行,每行包含一个键值对。=
分割,提取参数名和参数值。ParsedParams
中筛选出我们感兴趣的参数(在这个例子中是 param1
)。STRING_SPLIT
函数在 SQL Server 2016 及更高版本中可用。领取专属 10元无门槛券
手把手带您无忧上云