在 PostgreSQL 中如何组合 NOT IN 和 LIKE?

boo*_*ear 1 postgresql notin sql-like

你如何结合NOT INLIKE

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

据我了解,寻找不在您使用的字符串数组中的内容NOT IN并传递字符串

SELECT names FROM some_table NOT IN('cheese','milk','meat');
Run Code Online (Sandbox Code Playgroud)

但我该如何通过

LIKE '%cheese%'
Run Code Online (Sandbox Code Playgroud)

到它?

Cra*_*ger 5

该结构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)
Run Code Online (Sandbox Code Playgroud)

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

NOT = ANY (...)
Run Code Online (Sandbox Code Playgroud)