Все остальные, похоже, очень хотят сказать вам, что вы не должны этого делать, хотя я не вижу четкого объяснения, почему бы и нет.
Помимо нарушения правил нормализации, причина в том, что вы будете выполнять сканирование таблицы по всем строкам, поскольку у вас не может быть индекса для отдельных «значений» в этом столбце.
Проще говоря, ядро СУБД не может вести какой-либо быстрый список строк, содержащих код «AC», если вы не разбиваете его на отдельную таблицу или не помещаете в столбец самостоятельно. .
Теперь, если у вас есть другие критерии в ваших инструкциях SELECT, которые будут ограничивать число строк до некоторого управляемого числа, тогда, возможно, это будет хорошо, но в противном случае я бы, если вы можете, попытался бы избежать этого решения и сделать то, что вам уже сказали другие, разбейте на отдельные таблицы.
Теперь, если вы застряли с этим дизайном, вы можете выполнить поиск, используя запрос следующего типа:
...
WHERE ',' + Code + ',' LIKE '%,AC,%'
Это будет:
- Соответствие 'ON, VI, AC, ZO'
- Не соответствует 'ON, VI, TAC, ZO'
Я не знаю, является ли последний вариант приемлемым в вашем случае, если у вас есть только двухбуквенные коды, вы можете использовать только это:
...
WHERE Code LIKE '%AC%'
Но, опять же, это будет работать ужасно, если вы не ограничите количество строк, используя другие критерии.