0

我有表中列的值,我需要精确字符串的某些部分

 baf93b64-c255-4dda-b9dc-3f7438b49335-mkttrg&utm_source=bing&utm_medium=cpc&utm_campaign=MO+-+Payday&utm_term=payday+loan&utm_content=Payday+Loans+(Phrase)

现在我必须从第一个 & 中提取,即

utm-source = bing
utm-medium  = cpc 
utc_campaign  = MO+Payday
utm_term = 'payday+loan'
utm_content = Payday+loans+(Phrase).

你能帮我用子字符串函数从提到的值列中提取这些部分吗?

提前致谢。

4

2 回答 2

1

使用以charindex开头的子字符串,提取的字符数是字符串的长度减去开头和结尾两段的长度。您将需要进行一些数据验证,以便 col 具有您想要的形式。

substring(col, charindex('&', col) + 1, len(col) - charindex('&', reverse(col)) - charindex('&', col))

测试代码:

DECLARE @col nvarchar(100) = '12&12545643&euwpo';

SELECT substring(@col, charindex('&', @col) + 1, len(@col) - charindex('&', reverse(@col)) - charindex('&', @col))
于 2016-11-29T18:47:43.843 回答
0

通过使用SplitString函数解决此问题的主要方法。

然后取决于您的评论:

在我在问题中提到的字符串中,它没有选择最后一部分“utm_content = Payday + Loans +(Phrase)”,因为我猜它最后没有&!

使用以下代码:-

SELECT top ((select count (*)  FROM dbo.SplitString('baf93b64-c255-4dda-b9dc-3f7438b49335-mkttrg&utm_source=bing&utm_medium=cpc&utm_campaign=MO+-+Payday&utm_term=payday+loan&utm_content=Payday+Loans+(Phrase)', '&')
where item like '%=%' ) -1) item
FROM dbo.SplitString('baf93b64-c255-4dda-b9dc-3f7438b49335-mkttrg&utm_source=bing&utm_medium=cpc&utm_campaign=MO+-+Payday&utm_term=payday+loan&utm_content=Payday+Loans+(Phrase)', '&')
where item like '%=%'

结果:-

在此处输入图像描述

于 2016-11-29T19:18:20.717 回答