お世話になります。
現在検索フォームを作成しているのですが、スペース区切りのキーワードに完全一致、且つ複数のキーワードに対応させたいのですが行き詰っています。
データ内容:
id | key|
------------
1 |食パン|
2 |カレーパン フランスパン|
3 |食パン カレーパン フランスパン|
4 |パン カレーパン|
スペースで区切られたキーワードに一致する場合のみ検索結果に表示したいのです。
そこで、下記のコードを試しましたがいずれも希望の動作はしませんでした…。
SELECT * FROM `TEST` WHERE key like "パン" ⇒ どれもヒットせず
SELECT * FROM `TEST` WHERE key like "%パン%" ⇒ すべてヒット
複数検索:
SELECT * FROM `TEST` WHERE key like "%パン%" AND tag like "%フランスパン%" ⇒ id=3もヒットしてしまう(id=4だけヒットさせたい)
SELECT * FROM `TEST` WHERE key like "パン" AND tag like "フランスパン" ⇒ ヒットなし
スペース区切りのキーワードごとの複数検索の方法があればご教授頂けますと幸いです。
よろしくお願いいたします。
検索キーワードに区切り文字であるスペースを含めて、key項目の最初と最後の項目が検索できるようにkey項目にスペースを付け加えてやればよいのではないでしょうか。
SELECT * FROM `TEST` WHERE ( ' ' + key + ' ' like '% パン %' AND ' ' + key + ' ' like "% カレーパン %" )