複数の一致を探す短い方法はありますか?
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)%';
配列またはセットの比較の使用:
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%'));
このクールなトリックに従ってLIKE ANY(ARRAY['AAA%', 'BBB%', 'CCC%'])
を使用してください @ maniekは本日前に示しました 。
パターンマッチング で説明されているように、正規表現演算子(〜)を()で区切って使用できます。
select column_a from table where column_a ~* 'aaa|bbb|ccc'