2016-11-29 18 views
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). 

可以請您幫助我的子字符串函數提取自提列值這些部件。

在此先感謝。

回答

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)) 
+0

它拋出error..Msg 537,級別16,狀態3,行16 傳遞給LEFT或SUBSTRING函數的長度參數無效。 – kris

+1

這裏肯定夠給你一個堅實的想法如何繼續。 –

+0

@kris我添加了測試代碼。希望這個幫助。 – DVT

0

通過使用SplitString功能解決這一問題的主要途徑。

然後取決於您的評論:

我在我的問題提到的字符串中

,不採摘 最後一部分「的utm_content =發薪日+貸款+(短語)」作爲它沒有 &在最後我猜!

使用下面的代碼: -

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 '%=%' 

結果: -

enter image description here

+0

它不工作。出現錯誤..Msg 208,級別16,狀態1,行26 無效的對象名稱'dbo.SplitString'。 – kris

+0

轉到我的答案中提到的鏈接並首先執行SplitString ...這是鏈接> http://www.aspsnippets.com/Articles/Split-and-convert-Comma-Separated-Delimited-String-to - 表 - 在-SQL Server.aspx –