PostgreSQLで大文字小文字を区別せずLIKEで検索する方法 †PostgreSQLで文字列検索の時、英文字の小文字大文字を区別せずにSELECTする方法を以下に記します。 LIKEではなく、ILIKEを使う †以下のテーブルを作成し、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 行) ILIKEを使用した時の出力 †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 を使えば意図した動作になる実行例資料でした。 |