在SQL Server表中解析URL以提取键和值对

时间:2015-04-21 15:40:46

标签: sql-server

我有一个带有URL字段的表。它包含来自客户站点的随机URL。我想从那些具有查询字符串的网址中提取密钥和值。例如,如果我有:

  

http://www.tigerdirect.ca/applications/SearchTools/item-details.asp?EdpNo=2580461&sku=B69-1412&SRCCODE=CANEMBP004&cm_mmc=Email--Retro--CANEMBP004-_-viewed

我需要存储过程在结果中返回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
);

0 个答案:

没有答案