SQL: как выполнить строку не равно


115

У меня следующий запрос

SELECT * FROM table
WHERE tester <> 'username';

Я ожидаю, что это вернет все результаты, в которых тестер не является строкой username, но это не работает. Я думаю, что ищу обратный Likeоператор, но не уверен? В своих поисках я нашел решения для чисел (отсюда я получил <>), но, похоже, это не работает со строками.


5
Есть ли у вас проблемы с NULLценностями? ( NULL <> 'username' => NULL=> ложь)?
Wrikken

Ответы:


175

Ваше whereпредложение вернет все строки, где testerне совпадает usernameИ, где testerне равно нулю.

Если вы хотите включить NULL, попробуйте:

where tester <> 'username' or tester is null

Если вы ищете строки, которые не содержат слово «имя пользователя» в качестве подстроки, то likeможно использовать:

where tester not like '%username%'

42

Попробуйте следующий запрос

select * from table
where NOT (tester = 'username')

21

NULL-безопасное условие будет выглядеть так:

select * from table
where NOT (tester <=> 'username')

Да !, это единственное, что у меня работает, потому что у меня есть цепочка и. Не знал оператора <=>. Спасибо!
varta

Просто заметил, что <=>оператор существует только в MySQLмире, для получения дополнительной информации см. Что такое <=>
Top-Master


7

Здесь strcompможет быть уместна функция (возвращает 0, если строки идентичны):

 SELECT * from table WHERE Strcmp(user, testername) <> 0;

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.