Gibt es eine kürzere Möglichkeit, nach mehreren Übereinstimmungen zu suchen:
SELECT *
from table
WHERE column LIKE "AAA%"
OR column LIKE "BBB%"
OR column LIKE "CCC%"
Diese Frage gilt für PostgreSQL 9.1, aber wenn es eine generische Lösung gibt, wäre sie noch besser.
Vielleicht würde SIMILAR TO
funktionieren?
SELECT * from table WHERE column SIMILAR TO '(AAA|BBB|CCC)%';
Verwenden von Array- oder Set-Vergleichen:
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%'));
Es ist auch möglich, eine AND
zu machen, was mit einem Regex nicht einfach wäre, wenn er einer beliebigen Reihenfolge entsprechen würde:
select str from t
where str like all ('{"%999%", "DDD%"}');
select str from t
where str like all (values('%999%'), ('DDD%'));
Verwenden Sie LIKE ANY(ARRAY['AAA%', 'BBB%', 'CCC%'])
für diesen coolen Trick, den @maniek heute gezeigt hat .
Sie können den Operator für reguläre Ausdrücke ( ~ ) verwenden, getrennt durch ( | ) wie unter Pattern Matching beschrieben
select column_a from table where column_a ~* 'aaa|bbb|ccc'
Möglicherweise können Sie IN verwenden, wenn Sie tatsächlich keine Platzhalterzeichen benötigen.
WÄHLEN * aus der Tabelle WO Spalte IN ("AAA", "BBB", "CCC")