Прежде всего, вы не должны хранить такие значения, как вы, вы должны использовать дочернюю таблицу с одной строкой на элемент, это сделает ваш текущий запрос намного проще для обработки и позволит также использовать индексы.
Сказав это, вы хотите вот что:
WHERE ',' + order + ',' LIKE '%,19,%'
Добавляя запятую перед и после списка значений в поле order
, вы можете запросить в этом поле требуемое значение с запятой на каждой стороне, и вам не придется иметь дело со специальным случаем значение является первым или последним значением в списке.
С помощью указанного вами запроса вы могли бы заставить его работать, осознав, что OR
не дает больше аргументов для предложения LIKE
, он разделяет совершенно разные предложения и, таким образом, переписывает SQL следующим образом:
WHERE order LIKE '19,%' OR order LIKE '%,19,%' OR order LIKE '%,19'
---+------ ^ ----+----- ^
| | | |
+- add this -+---------+ +- removed
percent
Примечание отсутствует пропущенная во втором шаблоне запятая, которая будет соответствовать строкам, содержащим значение 19, и будет отмечаться удаленный символ процента в последнем, что позволит сопоставлять списки, заканчивающиеся на 19.