Existe-t-il un moyen plus court de rechercher plusieurs correspondances:
SELECT *
from table
WHERE column LIKE "AAA%"
OR column LIKE "BBB%"
OR column LIKE "CCC%"
Cette question s’applique à PostgreSQL 9.1, mais s’il existait une solution générique, ce serait encore mieux.
Peut-être qu'utiliser SIMILAR TO
fonctionnerait?
SELECT * from table WHERE column SIMILAR TO '(AAA|BBB|CCC)%';
Utilisation de comparaisons de tableaux ou d’ensembles:
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%'));
Il est également possible de faire une AND
qui ne serait pas facile avec une regex si elle correspond à n'importe quel ordre
select str from t
where str like all ('{"%999%", "DDD%"}');
select str from t
where str like all (values('%999%'), ('DDD%'));
Utilisez LIKE ANY(ARRAY['AAA%', 'BBB%', 'CCC%'])
selon cette astuce géniale @maniek a montré plus tôt dans la journée .
Vous pourrez peut-être utiliser IN si vous n'avez pas réellement besoin de caractères génériques.
SELECT * de table WHERE colonne IN ('AAA', 'BBB', 'CCC')