2 ответов:
что это за поле такое? Оператор IN не может использоваться с одним полем, но предназначен для использования в подзапросах или с предопределенными списками:
-- subquery SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y); -- predefined list SELECT a FROM x WHERE x.b NOT IN (1, 2, 3, 6);Если вы ищете строку, перейдите к оператору LIKE (но это будет медленно):
-- Finds all rows where a does not contain "text" SELECT * FROM x WHERE x.a NOT LIKE '%text%';Если вы ограничиваете его так, что строка, которую вы ищете, должна начинаться с данной строки, она может использовать индексы (если в этом поле есть индекс) и быть достаточно быстрой:
-- Finds all rows where a does not start with "text" SELECT * FROM x WHERE x.a NOT LIKE 'text%';
SELECT * FROM table WHERE field1 NOT LIKE '%$x%';(убедитесь, что вы избегаете $x правильно заранее, чтобы избежать SQL-инъекции)Edit:
NOT INделает что - то немного другое-ваш вопрос не совсем ясен, поэтому выберите, какой из них использовать.LIKE 'xxx%'можно использовать индекс.LIKE '%xxx'илиLIKE '%xxx%'не могу.
Comments