组合“like”、“not like”和“or”

wribegjk  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(370)

我正在学习mysql,我试图在我的查询中将“notlike”和“or”结合起来,但都是徒劳的。
假设我有一个表1,其中一列名为“word”,如下所示:

word
        1      SPAS
        2      SPAM
        3     HILAS
        4     BAMM
        5     ASCAR
        6      CASE
        7     ASHISPA

如果运行此代码:

SELECT * FROM table1
                            WHERE table1.word LIKE '%AS%' AND
                             table1.word LIKE '%SP%';

我明白了

word
   1    SPAS
   7 ASHISPA

当我与“不喜欢”组合时,如下所示:

SELECT * FROM table1
                            WHERE table1.word LIKE '%AS%' AND
                            table1.word LIKE '%SP%' AND
                            table1.word NOT LIKE '%HI%';

我得到以下信息:

word
    1 SPAS

当我用“or”运行查询时,如下所示:

SELECT * FROM table1
                            WHERE table1.word LIKE '%AS%' or
                             table1.word LIKE '%SP%';

结果如下:

word
     1    SPAS
     2    SPAM
     3   HILAS
     5   ASCAR
     6    CASE
     7 ASHISPA

为了省略“hilas”和“ashispa”,我们尝试了:

SELECT * FROM table1
                            WHERE table1.word LIKE '%AS%' OR
                            table1.word LIKE '%SP%' AND
                            table1.word NOT LIKE '%HI%'

得到:

word
     1    SPAS
     2    SPAM
     3   HILAS
     5   ASCAR
     6    CASE
     7 ASHISPA

如何使用“or”查询带有“sp”和“as”的单词,并使用“not like”排除带有“hi”的单词,从而得到以下结果:

word
     1    SPAS
     2    SPAM                
     5   ASCAR
     6    CASE
uxhixvfz

uxhixvfz1#

如果我理解正确,你只需要括号:

WHERE (table1.word LIKE '%AS%' OR table1.word LIKE '%SP%') AND
      table1.word NOT LIKE '%HI%'

混合时应始终使用括号 AND 以及 OR .

相关问题