PostgreSQLで文字列検索の時、英文字の小文字大文字を区別せずにSELECTする方法を以下に記します。
以下のテーブルを作成し、INSERTによりデータを投入しました。
CREATE TABLE t1 ( no integer, keyword varchar(128) );
以下、実行時の出力です。
sakuradb=> CREATE TABLE t1 ( sakuradb(> no integer, sakuradb(> keyword varchar(128) sakuradb(> ); CREATE TABLE sakuradb=> sakuradb=> INSERT INTO t1 VALUES (1,'hello'),(2,'HELLO'),(3,'HeLlO'); INSERT 0 3 sakuradb=> SELECT * FROM t1; no | keyword ----+--------- 1 | hello 2 | HELLO 3 | HeLlO (3 行)
WHERE句でLIKEではなく、ILIKEで文字列検索を行うと、大文字小文字が区別され検索結果が表示されます。
sakuradb=> SELECT * FROM t1 WHERE keyword ILIKE '%LL%'; no | keyword ----+--------- 1 | hello 2 | HELLO 3 | HeLlO (3 行)
sakuradb=> SELECT * FROM t1 WHERE keyword ILIKE '%ll%'; no | keyword ----+--------- 1 | hello 2 | HELLO 3 | HeLlO (3 行)
ちなみにLIKEでは、大文字小文字が区別されます。
sakuradb=> SELECT * FROM t1 WHERE keyword LIKE '%ll%'; no | keyword ----+--------- 1 | hello (1 行) sakuradb=> SELECT * FROM t1 WHERE keyword LIKE '%LL%'; no | keyword ----+--------- 2 | HELLO (1 行)
以上、PostgreSQLで大文字小文字を判別せず検索には ILIKE を使えば意図した動作になる実行例資料でした。