在PostgreSQL如何NOT IN和LIKE结合?(In PostgreSQL how to c

2019-10-18 05:10发布

如何结合NOT INLIKE

假设我们有一个包含名称的列(像“蓝奶酪”,“豪达奶酪”等)的表,我想选择所有不包含“奶酪”,“牛奶”的名字,'肉'。

据我了解,寻找的东西是不是在一个字符串数组您使用NOT IN与通过串

SELECT names FROM some_table NOT IN('cheese','milk','meat');

但我怎么传

LIKE '%cheese%'

呢?

Answer 1:

将构建LIKE ANY (ARRAY[...])似乎满足您的需求;

craig=> SELECT a FROM (
           VALUES ('cheesy'), ('imilk'), ('donut'), ('pie'), ('avocado'), ('meaty')
        ) x(a) 
        WHERE NOT a LIKE ANY (ARRAY['%cheese%','%milk%','%meat%']);

    a    
---------
 cheesy
 donut
 pie
 avocado
(4 rows)

如果你想使用你所需要的通配符LIKE这种方式。 如果你真的只是想平等,你可以使用:

NOT = ANY (...)


文章来源: In PostgreSQL how to combine NOT IN and LIKE?