How to use SQL LIKE condition with multiple values in PostgreSQL?

前端 未结 6 1362
小蘑菇
小蘑菇 2020-12-04 18:03

Is there any shorter way to look for multiple matches:

 SELECT * 
 from table 
 WHERE column LIKE \"AAA%\" 
    OR column LIKE \"BBB%\" 
    OR column LIKE \         


        
6条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-04 18:25

    Using array or set comparisons:

    create table t (str text);
    insert into t values ('AAA'), ('BBB'), ('DDD999YYY'), ('DDD099YYY');
    
    select str from t
    where str like any ('{"AAA%", "BBB%", "CCC%"}');
    
    select str from t
    where str like any (values('AAA%'), ('BBB%'), ('CCC%'));
    

    It is also possible to do an AND which would not be easy with a regex if it were to match any order:

    select str from t
    where str like all ('{"%999%", "DDD%"}');
    
    select str from t
    where str like all (values('%999%'), ('DDD%'));
    

提交回复
热议问题