2011-10-13 73 views
2

我遇到了一個問題,我在猜測是否有更好的方法來實現我的目標。我有此查詢在MySQL中檢索某些行:在MySQL中「合併」IN和LIKE運算符

SELECT * 
FROM table 
WHERE field IN ('V','S','G','B') 

我想這樣做是運行檢索,其中字段值喜歡那些在IN列表中的行的查詢。我知道,瑣碎的方法是使用此查詢:

SELECT * 
FROM table 
WHERE field LIKE '%V%' OR field LIKE '%S%' OR 
     field LIKE '%G%' OR field LIKE '%B%' 

我想知道的是有這麼做到這一點,或者至少,如果運營商不存在,更好的方式來編寫查詢操作。

感謝大家的幫助。

回答

1

把值表(Params),然後使用

SELECT * 
    FROM table 
WHERE EXISTS (
       SELECT * 
       FROM Params 
       WHERE table.field LIKE '%' + Params.col + '%' 
      ); 

想想也把通配符入值在Params表。

+0

啊,你讓我了。 –

+0

但你需要'SELECT table。* ... GROUP BY table.PK'來消除重複的結果(所以查詢嚴格等同於OP的)。 –

+0

或者'EXISTS'重寫。 –