2012-06-26 43 views
1

搜索值使用相同的值縮短句子找一個搜索值

SELECT Name, UnitPrice, Quantity, Color 
FROM Product 
WHERE Name Like '2' OR UnitPrice Like '2' OR Quantity LIKE '2' OR Color LIKE '2' 

是有辦法縮短句子,這樣我就不需要重複變量LIKE'值'?

回答

5

LIKE沒有通配符是=

SELECT Name, UnitPrice, Quantity, Color 
FROM Product 
WHERE '2' IN (Name, UnitPrice, Quantity, Color) 

這擴大了一系列的OR條件
注意字符串'2'將被轉換爲如果要求後或擴展

需要通配符和LIKE,你必須使用一系列OR語句。

最後,這不會擴展性能明智的。有了良好的索引,那麼這可能會更好它們之間寫成單獨的查詢與UNION

編輯(每列和其他2爲INCLUDE列如一個),爲了清楚

OP想要使用通配符。因此我的IN建議將不起作用。所以,你必須做到這一點

WHERE 
    Name Like '%2%' OR 
    UnitPrice Like '%2%' OR 
    Quantity LIKE '%2%' OR 
    Color LIKE '%2%' 

因爲領先的通配符,沒有一點增加索引。所以,我的文字上面關於索引+包括無關

+0

由於它的工作,但我知道我忘了加中如果該值如果「28」,那麼這個SQL是行不通的。因爲它不接受% – unknown

+0

@unknown:你的例子沒有通配符,也不會發現「28」。另外,當查找數量爲2時,爲什麼你想要28?在名稱中搜索(.. LIKE'%2%')我可以理解。請你的問題更清楚:並注意我覆蓋,你可能真的要通配符...... – gbn

+0

呀。如果有太多'或',我確實閱讀過有關性能的內容。我只是不明白每列和其他2作爲包括列。你是不是指'2'IN(名稱,單價,數量,顏色)。我想LIKE「%2%」的例子,這樣它會找到什麼,如果它有可能是關係到2。 – unknown