是否有任何更短的方法来查找多个匹配项:
SELECT *
from table
WHERE column LIKE "AAA%"
OR column LIKE "BBB%"
OR column LIKE "CCC%"
这个问题适用于 PostgreSQL 9.1,但如果有一个通用的解决方案会更好。
是否有任何更短的方法来查找多个匹配项:
SELECT *
from table
WHERE column LIKE "AAA%"
OR column LIKE "BBB%"
OR column LIKE "CCC%"
这个问题适用于 PostgreSQL 9.1,但如果有一个通用的解决方案会更好。
也许使用SIMILAR TO
会起作用?
SELECT * from table WHERE column SIMILAR TO '(AAA|BBB|CCC)%';
按照@maniek 今天早些时候展示的LIKE ANY(ARRAY['AAA%', 'BBB%', 'CCC%'])
这个很酷的技巧使用。
使用数组或集合比较:
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%'));
如果要匹配任何订单,也可以使用正则表达式来做一个AND
不容易的事情:
select str from t
where str like all ('{"%999%", "DDD%"}');
select str from t
where str like all (values('%999%'), ('DDD%'));
您可以使用正则表达式运算符 ( ~ ),由 ( | ) 分隔,如模式匹配中所述
select column_a from table where column_a ~* 'aaa|bbb|ccc'
以下查询帮助了我。LIKE
您可以使用 ,而不是使用~*
。
select id, name from hosts where name ~* 'julia|lena|jack';
如果您实际上不需要通配符,则可以使用 IN。
SELECT * from table WHERE column IN ('AAA', 'BBB', 'CCC')