2015-03-13 81 views
0

我想知道有沒有辦法合併not in()函數與like或通配符*在MySQL?如以下查詢中所示:結合不在和喜歡的功能,在MySQL查詢

select sl_tags from tablname 
    where `sl_tags` not in ('%Soccer%','%Football%','%Hockey%','%shinny%','%Basketball%','%Volleyball%','%Cricket%') 

以上查詢不起作用。

我知道這工作

select sl_tags from tablname where `sl_tags` Not like '%Soccer%' and `sl_tags` Not like '%Football%' 

我看到了堆以前的問題和答案,其問,並沒有發現任何相關的答案。

回答

0

不,沒有這樣的操作員。

但是你可以使用Regular Expressions

SELECT sl_tags 
    FROM tablname 
    WHERE sl_tags NOT REGEXP 'Soccer|Football|Hockey|shinny|Basketball'; 

要知道,對於某些字符(如點.)具有特殊的含義,必須escaped從字面上使用做到這一點稍有不同的方式。

+0

Thanks @ Barmaley.exe,我找到了這樣的東西。 – Von 2015-03-13 14:28:22

0

沒有,但你可以使用not like

select sl_tags 
from tablname 
where sl_tags Not like '%Soccer%', and 
     sl_tags Not like '%Football%' and 
     sl_tags Not like '%Hockey%', and 
     sl_tags Not like '%shinny%' and 
     sl_tags Not like '%Basketball%' and 
     sl_tags Not like '%Volleyball%' and 
     sl_tags Not like '%Cricket%'; 

你沒有提供的信息,但列名建議您存儲的標籤列出了sl_tags列。這不是最好的方法。您應該有一個單獨的表格,在原始數據中每行包含一個標記。接合表上的查詢將會更簡單。

+0

戈登,我提到了這個問題的查詢和運作良好,但我的問題,即我想另一種方式來獲得相同的結果。其他一些運算符如下所示:不像LIKE ANY(ARRAY ['%xyz%','%abc%']) – Von 2015-03-13 11:02:10