PostgreSQLでアルファベットの大文字小文字を区別せず検索する方法

.Net Core

はじめに

MySQLやSQLServerではDBの照合順序を指定すれば大文字小文字区別なく検索することができます
PostgreSQLでは照合順序では設定できません

ILIKEを使う方法

PostgreSQLで大文字小文字区別なく検索するにはILIKEを使用します
例えば以下のようなテーブルがあるとします

create table languages 
( 
    id serial not null primary key, 
    name varchar(100)
);

テストデータを下記のようにします

INSERT INTO languages (name) VALUES('PHP')

LIKEで検索した場合はヒットしません

SELECT * FROM languages WHERE name LIKE 'php'

LIKEをILIKEに変更すると大文字小文字区別なく検索することができます

SELECT * FROM languages WHERE name ILIKE 'php'

EntityFrameworkでILIKEを使用する方法

LINQのWhere内でEF.Functions.ILikeを使用すればILIKEがEntityFrameworkが使用できます

DbContext.Languages.Where(l => EF.Functions.ILike(l.name, "php"))
タイトルとURLをコピーしました