Postgresを使用して、検索のシステムを制作しておりますが、データベース内が半角カタカナや全角カタカナ、または全角英数字、半角英数字とばらばらなのですが、これを


バラ
バラ

と入力してもバラもバラも検索に引っかからせる事は出来ますでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/05/18 05:46:08
  • 終了:2006/05/21 13:12:09

回答(2件)

id:bonlife No.1

回答回数421ベストアンサー獲得回数752006/05/18 07:41:18

ポイント35pt

出来るか、出来ないか、と言えば出来ます。

ただし、DB(PostgreSQL)の機能のみでは厳しいです。

[参考URL]

プログラム側でDB操作時の半角、全角を統一すれば良いです。

具体的には、入力値の英数字は全て半角に変換してDBに格納、入力値の半角カタカナは全角カタカナに変換してDBに格納し、検索の際にも英数字は半角に変換、半角カタカナは全角カタカナに変換して検索します。

つまり、DBには全角英数字、半角カタカナは存在しない状況を作っておけば良いわけです。

例えば、Perlを使う場合、Jcodeモジュールを使って上記で説明しているような変換を行います。

Jcodeを使った変換の方法はこのあたりで確認してみてください。

PHPであればmb_convert_kana()という関数が使えます。

参考になれば幸いです。

id:makocan

ご回答ありがとうございます!

うーん、ただ、DBには、既にデータが入っており、そこを検索したいため、ちょっと、違うかもしれません。

2006/05/18 11:31:06
id:pxb12663 No.2

pxb12663回答回数395ベストアンサー獲得回数142006/05/18 11:05:19

ポイント35pt

phpだと、mb_convert_kana関数が使えます。

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k05.htm

この関数を使って、DBから読み込んだ文字列と検索に利用する文字列を全角に変換して検索させれば両方ヒットします。

他の言語でも同じような関数はあると思います。

id:makocan

これはDBから、全ての値を取り出した後に、if文等で、条件分岐させるという事でしょうか?

また、書き忘れましたが、言語はPHPです。

2006/05/18 11:32:04

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません