アプリ版:「スタンプのみでお礼する」機能のリリースについて

 たびたびお世話になります。
 PHPファイルのテキストボックスに入力された文字列でテーブルを検索して結果を取得したいのですが、複数キーワードでのあいまい検索の扱いで困っています。
 例えばtitleというカラムにある「今日はいい天気です」という文を検索したい場合は、PHPからSQL文で「select * from table where title like '%天気%';」とやれば引っかかるのですが、では「今日 天気」でやった場合、また「いい 今日」で検索した場合も引っかかるようにしたいのです。
 PHPで文字列を代入してSQL文を作る形になるとは思うのですが、この場合、SQL文はどのように記述すればいいのでしょうか?

A 回答 (2件)

あいまい検索の場合、カラム名 LIKE '%キーワード%' ですね。


複数のキーワードを重ねる場合、ANDやORがあります。ANDは両方とも含む場合、ORはどちらかを含む場合です。
即ち、「今日 天気」のどちらかが含まれる場合は、
SELECT * FROM table WHERE ( title LIKE '%今日%' ) OR ( title LIKE '%天気%' );
というクエリを発行すれば良いです。()は無くても同じですが、条件を重ねる場合はあった方が見やすいかもしれません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ANDは分かったのですが、構文が違っていました(汗)
これで何とかなりそうです。ありがとうございました。

お礼日時:2007/11/16 09:20

「title like '%天気%'」といった操作方法は、性能を出せない検索の仕方です。


それをorで繋ぐといったことは、性能を出したいシステムでは普通はやりません。
データ件数が1000件以下程度ならいいですが、数万件、数十万件になるなら、設計を見直した方がいいですよ。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
もちろん、もっと効率のいい方法もあるのでしょうが、今回はデータ件数が百件前後と少ないことと、時間があまりないのでこの方法を取ることにしました。

お礼日時:2007/11/16 09:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!