QA@IT
«回答へ戻る

回答を投稿

返信ありがとうございます!
入力欄確かに見づらいですねww

この場合、'TEST'という完全一致での文字列のみヒットするのですか?
例えば、'TE'や'ES'といった検索後ではヒットしないのでしょうか?

色々考えた結果、一からテーブ設計しなおしたほうがいい気もします。
colは複数に分けずに、一つに空白文字などで分けるようにした方がいいのかも。。
テーブ設計、というよりDBそのものを初めて利用しますので、テーブ設計に慣れていません。

補足しておきます。
簡単なタグ検索システムを作ろうと思っています。
tag1, tag2, tag3に文字列が入っており、部分一致でのAND検索を行いたいのです。
例えば、以下のようなテーブルがあるとします。

|tag1|tag2|tag3|
|田中|東京|商品部|

・「田中 商品部」でAND検索した場合にヒットする。
・「田」「中」「東」「東京」などでもヒットする。
・「田 大阪」などではヒットしない。

各カラムは部分一致とし、ヒットしたものに対し、入力を受けた語句全てに部分一致する(AND)

以下の様なクエリ文でもできますが、もう少し最適化出来ないか、と思います。
SELECT * FROM test_tbl WHERE (tag1 LIKE '%word1%' OR tag2 LIKE '%word1%' OR tag3 LIKE '%word1%') AND (tag1 LIKE '%word2%' OR tag2 LIKE '%word2%' OR tag3 LIKE '%word2%');

返信ありがとうございます!
入力欄確かに見づらいですねww

この場合、'TEST'という完全一致での文字列のみヒットするのですか?
例えば、'TE'や'ES'といった検索後ではヒットしないのでしょうか?

色々考えた結果、一からテーブ設計しなおしたほうがいい気もします。
colは複数に分けずに、一つに空白文字などで分けるようにした方がいいのかも。。
テーブ設計、というよりDBそのものを初めて利用しますので、テーブ設計に慣れていません。

補足しておきます。
簡単なタグ検索システムを作ろうと思っています。
tag1, tag2, tag3に文字列が入っており、部分一致でのAND検索を行いたいのです。
例えば、以下のようなテーブルがあるとします。

|tag1|tag2|tag3|
|田中|東京|商品部|

・「田中 商品部」でAND検索した場合にヒットする。
・「田」「中」「東」「東京」などでもヒットする。
・「田 大阪」などではヒットしない。

各カラムは部分一致とし、ヒットしたものに対し、入力を受けた語句全てに部分一致する(AND)

以下の様なクエリ文でもできますが、もう少し最適化出来ないか、と思います。
SELECT * FROM test_tbl WHERE (tag1 LIKE '%word1%' OR tag2 LIKE '%word1%' OR tag3 LIKE '%word1%') AND (tag1 LIKE '%word2%' OR tag2 LIKE '%word2%' OR tag3 LIKE '%word2%');