2016-03-20 1 views

ответ

1

Во-первых, у вас очень плохой формат данных. Вы сохраняете списки чисел в одном поле. Вот несколько причин, почему это плохая идея:

  • Хранение чисел как строки - плохая идея.
  • Хранение нескольких значений в одном столбце - плохая идея.
  • Не декларирование отношений с внешним ключом - плохая идея.
  • Реляционные базы данных не очень хороши при обработке строк, поэтому сохранение значений в виде строк - плохая идея.
  • Такие запросы (в общем) не могут быть оптимизированы с использованием индексов, другой плохая идея.

Итак, ваша структура данных плохая, плохая, плохая, плохая, плохая идея. Вам нужно узнать о таблицах соединений и правильном способе хранения списков в реляционной базе данных.

Тем не менее, когда-то мы придерживаемся плохих проектных решений других людей. Если это так, то вы можете использовать find_in_set(), MySQL-специфическая функция:

where find_in_set(2, field) > 0 
+0

спасибо и так много на этот ответ. как вы сказали, я новичок в этом плохом проекте и запутался в дизайне. но я не уполномочен изменять этот db. снова, спасибо за вашу помощь – Kylin

0

Вы можете использовать Regex для создания собственных запросов, следующий код взят из официальной документации MySQL:

SELECT * FROM table WHERE field REGEXP '^2$'; 

Here is the link to the documentation

Смежные вопросы