• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:検索で濁点や半濁点をヒットさせない)

PostgreSQLで濁点や半濁点をヒットさせない検索方法

このQ&Aのポイント
  • PostgreSQLでの検索において、濁点や半濁点をヒットさせない方法について調査しました。
  • データベースの設定を変更することで、濁点や半濁点を無視する検索が可能です。
  • 検索時に使用するクエリに特殊な記号を追加することで、濁点や半濁点を無視することもできます。

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

  • ベストアンサー
回答No.3

ひょっとしてカタカナの部分は元々半角文字で、 質問を投稿する際に全角になってしまっているのでしょうか? そうであれば濁点も半濁点も1文字ですので、 LIKE1回で絞り込むことはできないような気がします。 チルダをつかって正規表現でマッチさせるのではだめでしょうか? column_1 ~ 'カルヒ([^゛゜].*)?$'

rapport5683
質問者

お礼

お忙しいところ、いつもありがとうございます。 正規表現でうまくいきました!! column_1 ~ 'カルヒ[^゛゜]'

その他の回答 (2)

  • naiina
  • ベストアンサー率66% (10/15)
回答No.2

こちらこそ、検証不足のまま回答してしまい申し訳ありません。 手元に環境がないので確認不足ではありますが、 以下で再度ご確認いただけるでしょうか。 like 'カルヒ%' COLLATE "C" "C"の部分は環境によって変更する必要があるかもしれません。

参考URL:
http://www.postgresql.jp/document/9.1/html/xfunc-sql.html
rapport5683
質問者

補足

お忙しいところ、ご回答ありがとうございます。 like 'カルヒ%' COLLATE "C" で試してみましたが、動作結果は同じく、「カルビスープ」も「カルピス」もヒットしてしまいました。

  • naiina
  • ベストアンサー率66% (10/15)
回答No.1

PostgreSQLのバージョンが不明ですが。。 デフォルトの日本語ロケール(Japanese_Japan.932)では、 静音、濁音、半濁音の区別ができないようです。 手っ取り早く検索をヒットさせるのであれば、 バイナリとして部分検索すればうまくいくかと思います。 like binary 'カルヒ%' 恒久的に対応するならば、ロケールを変更する必要があるようです。 詳細については、参考URLをご参照ください。

参考URL:
http://lets.postgresql.jp/documents/technical/text-processing/2
rapport5683
質問者

補足

早急なご回答、ありがとうございます。とても助かります。 すいません。バージョンは、9.2.4です。 like binary 'カルヒ%' を試してみたのですが、「型"binary"は存在しません」となり実行できませんでした。 以下も試したのですがエラーでした。使い方が悪いのでしょか? like binary 'カルヒ%'::bytea ERROR: 演算子が存在しません: character varying ~~ bytea SQLステート:42883 ヒント:指定名称、指定引数型に合う演算子がありません。明示的な型キャストが必要かもしれません

関連するQ&A