SQL-запрос, где поле не содержит $x



Я хочу найти SQL-запрос, чтобы найти строки, где field1 не содержит $x. как я могу это сделать?

516   2  

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

    Ничего не найдено.