我試圖從URL中的SQL Server中的列解析信息2012SQL URL字符串內子字符串變量文本
的基本結構是
http://www.domainsomething.com/?test/campaign=abc&kwd=jdc ftp&catgory=brnd
,我需要抓住從參數值爲kwd=
。在上面的例子中,這將是'jdc ftp
',但是對於我列中的所有URL,這可能會有所不同。我試過CHARINDEX
和LEN
,但我似乎無法正確地將語法放在一起。
我試圖從URL中的SQL Server中的列解析信息2012SQL URL字符串內子字符串變量文本
的基本結構是
http://www.domainsomething.com/?test/campaign=abc&kwd=jdc ftp&catgory=brnd
,我需要抓住從參數值爲kwd=
。在上面的例子中,這將是'jdc ftp
',但是對於我列中的所有URL,這可能會有所不同。我試過CHARINDEX
和LEN
,但我似乎無法正確地將語法放在一起。
試試這個:
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.
我建議'CHARINDEX('kwd =',@URL +'kwd =')+ 4'返回一個沒有'kwd ='的網址'') –
@ shA.t這可能是個好東西的想法,但它依賴於業務邏輯。我假設一個沒有kwd參數的url應該引發一個錯誤。 –
播放顯示您的「失敗」代碼 – Amit
這真的不是你想在SQL Server中做一些事情。在一個好的設計中,客戶端應用程序可以是任何東西,不只是一個Web應用程序你不應該在你的SQL代碼中深入研究HTML的內容 - 將它分解成你期望的參數,並讓調用代碼將其排除。 – LoztInSpace