こんにちは、さるまりんです。
PostgreSQLで大文字小文字を無視して検索するにはILIKE
を使います。
LIKE
ではないですよ。ILIKE
です。
公式のドキュメントにはこうあります。
The key word
ILIKE
can be used instead ofLIKE
to make the match case-insensitive according to the active locale. This is not in the SQL standard but is a PostgreSQL extension.
(www.postgresql.org PostgreSQL 13 Documentation (英語版) の Functions and Operators – Pattern Matching より)
LIKE
の代わりにILIKE
を使うことでcase-insensitiveでマッチさせることができるとあります。case-insensitive、大文字小文字を区別しないということです。これはSQLの標準ではなくPostgreSQLのみの機能のようです。
SELECT [カラム1], ..., [カラムn]
FROM [テーブル名]
WHERE [カラム名] ILIKE '検索したい文字列'
実際に使ってみます。
salu=> select * from table_a where col ilike 'AAAA';
col
-------
aaaa
Aaaa
AAAA
(3 rows)
小文字でもやってみます。
salu=> select * from table_a where col ilike 'aaaa';
col
-------
aaaa
Aaaa
AAAA
(3 rows)
同じですね。
次はミックスです。
salu=> select * from table_a where col ilike 'aAAa';
col
-------
aaaa
Aaaa
AAAA
(3 rows)
そんなことなしでお願いしたいのですが、これまで小文字でもらっていたデータがある日急に「今日から大文字になったからよろしく」とか言われたら、これを思い出せるように残しておきます。
読んでくださってありがとうございます。
それではまた!