2012-11-03 29 views
0

我有一個問題了部分價值:比賽,如果列在Where子句

我想對陣的DBTABLE,列UrlPart值的值(URL)。

假設一行中的UrlPart列的值爲'id = 12345'。

現在我有一個查詢:

select * from products 
where UrlPart [is part of] 
'http://www.domain.com/category/?id=12345&referrer=www.google.com&etcetera' 

我想看到的比賽[ID = 12345 [是]「http://www.domain.com/category/?id=12345部分&爲真,因此它會返回產品行。

當然[是]的一部分不存在,但我想知道是否有可能將列中的值與將針對每個請求更改的url表達式匹配。 像一個正常的地方聲明,但後來reveresed。

是這樣的可能與SQL 2008 Express Edition

[UPDATE]

我已經測試等 '%' + UrlPart '%' 和CHARINDEX並根據MS SQL的exectution計劃,它們是相同的。似乎SQL在水下做同樣的事情,所以這兩個選項都很好。

我會認爲CharIndex可能會更粗糙,然後像(可能會被轉換),所以我現在去那個。

謝謝大家。

+0

所以你只需要改變的ID在URL中的查詢? – ChaosClown

回答

1
select * 
from products 
where 'http://www.domain.com/category/?id=12345&referrer=www.google.com&etcetera' 
     like '%'+UrlPart+'%' 
+0

好吧,我試過了,而且我做了%UrlPart%,我知道它不起作用,但我不知道你可以在它周圍連接%。我現在將檢查哪個版本更快,Like或CharIndex。謝謝 – Mattijs

1
select * 
from products 
where 'http://www.domain.com/category/?id=12345&referrer=www.google.com&etcetera' like '%' + UrlPart + '%' 
1

您可以使用charindex

select * from products 
where charindex('http://www.domain.com...',urlPart)<>0 
+0

是的,我把頭撞到牆上把它清理乾淨,然後找到一個字符串比較,這是CharIndex,它可以工作。但謝謝你的想法! – Mattijs