SQL: как выполнить строку не равно
У меня есть следующий запрос
SELECT * FROM table
WHERE tester <> 'username';
Я ожидаю, что это вернет все результаты, когда тестер не является строкой username
, но это не работает. Я думаю, что я ищу инверсию оператора Like
, но я не уверен? В моих поисках я нашел решения для чисел (где я получил < > from), но это, похоже, не работает со строками.
Ответы
Ответ 1
Ваше предложение where
вернет все строки, где tester
не соответствует username
И где tester
не является нулевым.
Если вы хотите включить NULL, попробуйте:
where tester <> 'username' or tester is null
Если вы ищете строки, которые не содержат слова "имя пользователя" в качестве подстроки, можно использовать like
:
where tester not like '%username%'
Ответ 2
Попробуйте выполнить следующий запрос
select * from table
where NOT (tester = 'username')
Ответ 3
NULL-безопасное состояние выглядит следующим образом:
select * from table
where NOT (tester <=> 'username')
Ответ 4
select * from table
where tester NOT LIKE '%username%';
Ответ 5
Здесь может быть уместна функция strcomp
(возвращает 0, когда строки идентичны):
SELECT * from table WHERE Strcmp(user, testername) <> 0;
Ответ 6
Еще один способ получения результатов
SELECT * from table WHERE SUBSTRING(tester, 1, 8) <> 'username' or tester is null