プロが教えるわが家の防犯対策術!

SQL初心者なのですが、複数のフィールドをターゲットにしたフリーワード検索用のSQL文の書き方が解らず困っております。
例えば以下の様に"責任者"フィールドを限定して"田中"さんを探す事は出来るのですが、
----------------------------------------------------------------
SELECT * FROM `会員表` WHERE 責任者 LIKE '%田中%'
----------------------------------------------------------------
複数の、例えば以下の3つの
●責任者フィールド
●担当者フィールド
●顧客フィールド
全てを対象に一括で”田中”さんを検索したい場合、
どのように記述すれば良いのでしょうか?

どなたか有識者の方いらっしゃいましたら宜しくお願いします!!

A 回答 (2件)

#1さんの方法はお勧めできません。



1)インデックスがきかない
2)セパレータを用いていない

1)に関しては、そもそも前後に%をいれた時点で、きかないので
あまり気にすることもないかもしれませんが、2)に関しては
たとえば、「責任者=吉田,担当者=中村」さんでもヒットします。
これはセパレータに適当な区切り文字を入れる必要があるでしょう。

まっとうに考えれば

(責任者 LIKE '%田中%'
OR 担当者 LIKE '%田中%'
OR 顧客 LIKE '%田中%')
とかじゃないですかねぇ
    • good
    • 6

すぐに思いつくのは concat でフィールドを結合して検索する方法です。



SELECT * FROM `会員表` WHERE concat(責任者,担当者,顧客) LIKE '%田中%'

Mysql 5.0 でテストしました。
おそらく4.xでも大丈夫だと思います。いかがでしょう?。

参考URL:http://dev.mysql.com/doc/refman/4.1/ja/string-fu …
    • good
    • 0

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

関連するカテゴリからQ&Aを探す