- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2017-05-10T13:07:13+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で文字列検索を行うと、大文字小文字が区別され検索結果が表示されます。
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)