人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでSQL文を発行し、likeで検索をしています。
その際、全角数字と半角数字を同一視したいのですが、どうすればいいでしょうか。
「123」と「123」の検索結果を同じにしたいのです。

●質問者: takeuchi_k
●カテゴリ:コンピュータ
✍キーワード:PHP SQL 数字 検索
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● きゃづみぃ
●20ポイント

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

PHP 基礎編5 - 文字列関数 substr、strlen、strpos、split、list、time、crypt - SAK Streets

strtolower で半角に変換したらいいでしょう。


というか SQLは データベース側なので データベースは 何でしょうか?

◎質問者からの返答

strtolowerは小文字への変換では・・・

データベースはMySQLです。


2 ● きゃづみぃ
●20ポイント

http://www.hatena.ne.jp/awindow?

あ、失礼しました。


半角に変換するのは、先のURLの下のほうにあります。


MySQL側で 取得した項目を半角に変換するような関数が ちょっと見当たらないので

次のようにするしかないと思います。


・検索用の項目を作り、そこには 半角に変換した値を入れるようにする。

それで 検索したらいいでしょう。

◎質問者からの返答

ありがとうございます。


3 ● thelon1980
●20ポイント

http://2php.jp/php/mb_convert_kana.html

2php : PHP mb_convert_kana()

取り合えず、変換だけなら以下のような感じで全角→半角になるはずです


$str = ”123”;


$str = mb_convert_kana($str, ’a’,”Shift_JIS”);


echo $str;


あと、SQL文はここで言う$strで回すと旨く行く筈

◎質問者からの返答

ありがとうございます。

03-1234-5678

というデータを、03-1234-5678で検索したい場合は(ハイフンの問題は脇におきます)、これではいけないですよね・・・


4 ● thelon1980
●20ポイント

http://www.hatena.ne.jp/1124244941#

人力検索はてな - PHPでSQL文を発行し、likeで検索をしています。 その際、全角数字と半角数字を同一視したいのですが、どうすればいいでしょうか。 「123」と「123」の検索結果を同じに..

半角→全角は以下のようなソースで上手くいく筈


$str = ”123”;


$str = mb_convert_kana($str, ’a’,”Shift_JIS”);


echo $str;


SQLはココでいう$strをlikeで検索かければ上手くいくのでは

◎質問者からの返答

ありがとうございます。

前の解答のコメントで書いたように、検索の「ゆらぎ」を吸収したいのですが、なかなか一発で決めてくれる関数ってないですよね。


5 ● tomoki_u
●20ポイント

http://www.hatena.ne.jp/1124244941#1

人力検索はてな - PHPでSQL文を発行し、likeで検索をしています。 その際、全角数字と半角数字を同一視したいのですが、どうすればいいでしょうか。 「123」と「123」の検索結果を同じに..

テーブルに格納するデータも全て半角に変換して格納すればどうですか?もちろんオリジナルの項目とは別にキー用のフィールドとして準備します。

検索する際に、検索キーをその変換ロジックに通してSELECTすればいいかと思います。

プログラミング言語が解決する問題ではなく、設計・実装で解決する問題ですね。

◎質問者からの返答

なるほど。格納するときに半角変換は考えたのですが、検索用のフィールドを作る手がありましたか。これをやってみます。

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ