こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PostgresqlのILIKEについて

現在、PostgresqlのILIKEを用いて、あるDBに検索をかけています、
半角英字の場合は検索でうまくいくのですが、全角文字で検索をかけるとILIKEでうまく検索をかけてくれません。(動作がLIKEと同じ)。
他のDBだとILIKEは使えるのですが、検索をしたいDBではILIKEがつかえません。
これはDBのロケールの問題なのでしょうか?
大変お手数ですが、ご教授お願い致します。

検索対象DBのロケール:C
Postgresqlのバージョン:9.3.13

投稿日時 - 2016-08-24 10:13:11

QNo.9219488

すぐに回答ほしいです

質問者が選んだベストアンサー

upper() や lower() や  ILIKEは ロケールが"ja_JP.なんちゃら"になってると
全角英字にも対応してくれることが多いですよ。

ただ、こういう曖昧な検索の場合って
大文字小文字の違いを無視したいだけでなく、全角半角の違いも無視したいことが多いので
例えば
 半角小文字/半角大文字/全角小文字→全角大文字
 半角カナ/全角カナ→全角かな
 半角記号→全角記号
されるtranslate()で 統一文字に変換させて、同じ変換をした検索キーでlike検索するとか

検索専用のカラムを設けて、同様に統一文字列に変換してさらにindex化しておく
っていう手法を使うことが多いんじゃないかな。

投稿日時 - 2016-08-25 11:38:43

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問