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

MySQLの質問です。
LIKEオプションの使い方なのですが、下記をまとめるとしたらどんな風にまとめるのが、ベストなのでしょうか?

NAME LIKE '%{$_REQUEST['text']}%' or FURIGANA LIKE '%{$_REQUEST['text']}%'

とりあえず下記の様にまとめたのですが、検索対象のフィールドが空だと検索対象にならないみたいなのですが、どうしてでしょうか?

concat(NAME,FURIGANA) LIKE '%{$_REQUEST['text']}%'

自分のパソコン内の環境だと問題ないのですが、レンタルサーバーにアップして動作確認をすると上記の症状が出てしまいます。

どなたか、教えてください。

●質問者: black_kenchan
●カテゴリ:ウェブ制作
✍キーワード:MySQL name オプション パソコン フィールド
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● b-wind
●27ポイント

1つ目の質問のみですが、これ以上は余りまとめないほうがよいように思います。

concat でつなげるとたとえば、

name,furigana,text
あい,うえ,いう

な時もマッチしてしまいますし、それは予期している動作ではないはずだからです。

実行速度的にもメリットは無いはずです。

2つ目の質問(フィールドが空)についてはすいませんが分かりません。

◎質問者からの返答

すいません。説明不足でした。

参照したいフィールドは、実はもっとありまして、5?6個位あります。そういう場合でもまとめずに記述した方が、良いのでしょうか?


2 ● sakassann
●27ポイント

なぜまとめる必要があるのでしょうか?

今回のようなSQL文なら、そのままで大丈夫だと思います。

また、black_kenchan さんのまとめ方だと、問題がありますよ。

極端な例になりますが、

NAME に 「味吉」

FURIGANA に 「良太」

という風にデータが入っていた場合、

検索語句として、「吉良」と入力すると、

そんなデータは存在しないのに、検索にヒットしてしまいます。

◎質問者からの返答

すいません。

確かに2つのフィールドの参照だと上記のでもそんなに問題ないのですが、実は参照したいフィールドが5?6個位あります。

そういう場合でも、繰り返し記述したほうが良いのでしょうか?


3 ● b-wind
●26ポイント

フィールドが5?6であってもまとめるメリットはSQLが少しばかり見やすくなる程度で、デメリットが大きいと思います。

まとめるといっても検索結果に差がある以上意味が変わってしまっているので、後々のメンテナンス時に問題になるだけだと思います。

繰り返しますが、該当のSQLでは性能上のメリットはありません。


4 ● kurukuru-neko
●10ポイント

目的が不明ですが、全文検索のような使い方だと

matchを使う方法があります。

http://dev.mysql.com/doc/refman/4.1/ja/fulltext-search.html

concatの仕様で、NULLが含まれる場合

全体がNULLになります。

http://dev.mysql.com/doc/refman/4.1/ja/string-functions.html

関連質問


●質問をもっと探す●



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