我试图解析SQL Server 2012中一列URL的信息
基本结构是
http://www.domainsomething.com/?test/campaign=abc&kwd=jdc ftp&catgory=brnd
我需要从kwd=
值中获取参数。在上面的示例中,它将是&{39; jdc ftp
',但对于我的列中的所有网址,这可能会有所不同。我已经尝试了CHARINDEX
和LEN
,但我似乎无法正确地将语法放在一起。
答案 0 :(得分:1)
试试这个:
DECLARE @URL varchar(100) = 'http://www.domainsomething.com/?test/campaign=abc&kwd=jdc ftp&catgory=brnd'
SELECT SUBSTRING(
@URL,
CHARINDEX('kwd=', @URL)+4,
CASE WHEN CHARINDEX('&', @URL, CHARINDEX('kwd=', @URL)+5) > 0 THEN
CHARINDEX('&', @URL, CHARINDEX('kwd=', @URL)+5)
- (CHARINDEX('kwd=', @URL)+4)
ELSE
LEN(@URL)
END
)
这也将处理kwd是查询字符串中的最后一个或第一个变量的情况。
您可以在this sql fiddle.
中自行玩游戏