我有一些用于数字营销的网址。这些URL有参数,所以我想解析URL并插入一个表。用于跟踪广告系列和分析。
例如:
https://www.example.com/?utm_source=google&utm_medium=blabla&utm_campaign=gameuser&utm_term=winwin&utm_content=takego
我想要那样的插入表。我怎样才能做到这一点?
理想情况下,您将在存储过程中执行此操作,以便您可以将工作分解为一口大小的块。你可以在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