このエントリーをはてなブックマークに追加


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 を使えば意図した動作になる実行例資料でした。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-05-10 (水) 13:08:11