使用T-SQL解析URL参数

问题描述 投票:1回答:1

我有一些用于数字营销的网址。这些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

我想要那样的插入表。我怎样才能做到这一点?

sql sql-server parsing url-parameters
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.