我有一个带有URL字段的表。它包含来自客户站点的随机URL。我想从那些具有查询字符串的网址中提取密钥和值。例如,如果我有:
我需要存储过程在结果中返回Key和Value。
EdpNo=2580461
sku=B69-1412
SRCCODE=CANEMBP004
cm_mmc=Email-_-Retro-_-CANEMBP004-_-viewed
其中EdpN
o是密钥,2580461
是第一个示例中的值
我已经查看了一些用户定义的函数,但它们都只能在我需要扫描表中的url字段时传入一个url。
也许我只是不知道如何使用它们,因此我们非常感谢您对我所拥有的内容或可能如何进行重组的任何见解。
UDF:
ALTER 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
);