- ベストアンサー
PostgreSQLで濁点や半濁点をヒットさせない検索方法
- PostgreSQLでの検索において、濁点や半濁点をヒットさせない方法について調査しました。
- データベースの設定を変更することで、濁点や半濁点を無視する検索が可能です。
- 検索時に使用するクエリに特殊な記号を追加することで、濁点や半濁点を無視することもできます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ひょっとしてカタカナの部分は元々半角文字で、 質問を投稿する際に全角になってしまっているのでしょうか? そうであれば濁点も半濁点も1文字ですので、 LIKE1回で絞り込むことはできないような気がします。 チルダをつかって正規表現でマッチさせるのではだめでしょうか? column_1 ~ 'カルヒ([^゛゜].*)?$'
その他の回答 (2)
- naiina
- ベストアンサー率66% (10/15)
こちらこそ、検証不足のまま回答してしまい申し訳ありません。 手元に環境がないので確認不足ではありますが、 以下で再度ご確認いただけるでしょうか。 like 'カルヒ%' COLLATE "C" "C"の部分は環境によって変更する必要があるかもしれません。
補足
お忙しいところ、ご回答ありがとうございます。 like 'カルヒ%' COLLATE "C" で試してみましたが、動作結果は同じく、「カルビスープ」も「カルピス」もヒットしてしまいました。
- naiina
- ベストアンサー率66% (10/15)
PostgreSQLのバージョンが不明ですが。。 デフォルトの日本語ロケール(Japanese_Japan.932)では、 静音、濁音、半濁音の区別ができないようです。 手っ取り早く検索をヒットさせるのであれば、 バイナリとして部分検索すればうまくいくかと思います。 like binary 'カルヒ%' 恒久的に対応するならば、ロケールを変更する必要があるようです。 詳細については、参考URLをご参照ください。
補足
早急なご回答、ありがとうございます。とても助かります。 すいません。バージョンは、9.2.4です。 like binary 'カルヒ%' を試してみたのですが、「型"binary"は存在しません」となり実行できませんでした。 以下も試したのですがエラーでした。使い方が悪いのでしょか? like binary 'カルヒ%'::bytea ERROR: 演算子が存在しません: character varying ~~ bytea SQLステート:42883 ヒント:指定名称、指定引数型に合う演算子がありません。明示的な型キャストが必要かもしれません
お礼
お忙しいところ、いつもありがとうございます。 正規表現でうまくいきました!! column_1 ~ 'カルヒ[^゛゜]'