使用T-SQL解析URL参数

时间:2019-03-01 14:02:06

标签: sql sql-server parsing url-parameters

我有一些数字营销网址。这些URL具有参数,因此我想解析URL并插入表。对于跟踪活动和分析。

例如:

https://www.example.com/?utm_source=google&utm_medium=blabla&utm_campaign=gameuser&utm_term=winwin&utm_content=takego

enter image description here

我想要这样插入表格。我该怎么办?

1 个答案:

答案 0 :(得分:0)

理想情况下,您将在存储过程中执行此操作,以便将工作分成几小块。您可以在1条SQL语句中完成所有操作,但是当您到达最后几个参数时,它变得有些噩梦!

基本方法是结合使用CHARINDEX和SUBSTRING来解析URL ...找到第一个?然后从那里拿到第一个&(然后在=的这边分开),然后找到下一个&(由=分开),然后冲洗并重复。

我已经为您开始了此过程-您应该可以扩展此过程以从URL中获取其余参数-有点慢且笨拙,但至少您可以看到发生了什么事

运行这段SQL,您很快就会知道:

declare @str VARCHAR(8000)= 'https://www.example.com/?utm_source=google&utm_medium=blabla&utm_campaign=gameuser&utm_term=winwin&utm_content=takego'

DECLARE @str1 VARCHAR(8000)= SUBSTRING(@str, CHARINDEX( '?',@str, 1)+1, CHARINDEX( '&',@str, 1) -CHARINDEX( '?',@str, 1)-1)

SELECT SUBSTRING(@str1, 1, CHARINDEX( '=',@str1, 1)-1)

SELECT SUBSTRING(@str1, CHARINDEX( '=',@str1, 1)+1, LEN(@Str1))

DECLARE @str2  VARCHAR(8000) = SUBSTRING(@str, CHARINDEX( '?',@str, 1) + len(@str1) + 2, LEN(@str))

SELECT @str2 = SUBSTRING(@str2, 1, CHARINDEX( '&',@str2, 1)-1)

SELECT @str2