【问题标题】:In PostgreSQL how to combine NOT IN and LIKE?在 PostgreSQL 中如何结合 NOT IN 和 LIKE?
【发布时间】:2013-05-27 02:34:22
【问题描述】:

NOT INLIKE 如何组合?

假设我们有一个表,其中包含一列名称(例如“blue cheese”、“gouda cheese”等),我想选择所有不包含“cheese”、“milk”的名称', '肉'。

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

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

但是我该如何通过

LIKE '%cheese%'

给它?

【问题讨论】:

    标签: postgresql sql-like notin


    【解决方案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 (...)
    

    【讨论】:

    • @boo_boo_bear: 或者 WHERE a !~~ ALL (...) / WHERE a <> ALL (...) 如果不涉及 NULL 值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 2020-05-28
    • 1970-01-01
    相关资源
    最近更新 更多