#author("2017-05-10T13:07:13+09:00","","") #author("2017-05-10T13:08:11+09:00","","") #navi(../) * PostgreSQLで大文字小文字を区別せずLIKEで検索する方法 [#wd0a6ab4] PostgreSQLで文字列検索の時、英文字の小文字大文字を区別せずにSELECTする方法を以下に記します。 #contents #htmlinsertpcsp(db-top.html,db-sp.html) * LIKEではなく、''I''LIKEを使う [#q5c0effe] 以下のテーブルを作成し、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を使用した時の出力 [#kfe93302] WHERE句でLIKEではなく、''I''LIKEで文字列検索を行うと、大文字小文字が区別され検索結果が表示されます。 WHERE句でLIKEではなく、&color(red){''I''};LIKEで文字列検索を行うと、大文字小文字が区別され検索結果が表示されます。 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で大文字小文字を判別せず検索には ''I''LIKE を使えば意図した動作になる実行例資料でした。 #htmlinsertpcsp(db-btm.html,db-sp.html)