MySQL String преобразование в выражение - PullRequest
0 голосов
/ 28 февраля 2011

У меня есть MySQL Routine с условием:

Where category like CONCAT("%",@category,"%")

... и это прекрасно работает с одной категорией.

Теперь я хочу сравнить несколько категорий, я пытался построить строку из PHP (конкатенация строк), но она не работает (в Mysql Routine).

Как я могу преобразовать это условие в несколько выражений LIKE?

1 Ответ

1 голос
/ 28 февраля 2011

Предполагается, что столбец вашей категории похож на: "кошки, собаки, слоны"; разделенные ключевые слова. Есть 3 решения:

1) Уродливое решение, возможно, худшее:

WHERE category like CONCAT("%",@category1,"%") 
OR category like CONCAT("%",@category2,"%")

Но для этого вы должны знать, сколько категорий вы будете запрашивать. Этот способ, вероятно, вообще не будет работать.

2) Если это таблица myisam, вы можете использовать функции полнотекстового поиска для сопоставления с полем категории, которое будет намного быстрее и аккуратнее, чем первый вариант.

3) Лучший способ - изменить структуру таблицы, чтобы иметь таблицу отношений между категориями и предметом (так как это выглядит как отношение 1-N)

Если вы можете дать некоторые определения (коды) и образцы данных, которые помогут понять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...