Posted at

PostgreSQLの同一カラムで部分一致検索を複数行う方法

通常、部分一致の検索を複数行う場合には、以下のようにやるかと思います。

select * from hoge where name like 'uno%' or name like 'dos%';

ですが、カラムが同一であれば、以下のようにまとめることが出来ます。

select * from hoge where name ~~* any(array['uno%', 'dos%']);

更には、副問合せを使ってこんな風にすることも。

select * from hoge where name ~~* any(select name || '%' from fuga);

なかなか便利で、重宝します。