SQL: Como executar string não é igual

114

Eu tenho a seguinte consulta

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

Estou esperando que isso retorne todos os resultados em que testador não é a string username, mas isso não está funcionando. Acho que estou procurando o inverso da Likeoperadora, mas não tenho certeza? Em minhas pesquisas, encontrei soluções para números (de onde eu obtive <>), mas isso parece não estar funcionando com strings.

Dan Ciborowski - MSFT
fonte
5
Os valores que você está tendo problemas com NULLvalores? ( NULL <> 'username' => NULL=> falso)?
Wrikken 01 de

Respostas:

174

Sua wherecláusula retornará todas as linhas onde testernão corresponde a usernameAND onde testernão é nulo.

Se você deseja incluir NULLs, tente:

where tester <> 'username' or tester is null

Se você estiver procurando por strings que não contenham a palavra "nome de usuário" como substring, likepode ser usado:

where tester not like '%username%'
Gordon Linoff
fonte
42

Tente a seguinte consulta

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

A condição de segurança NULL seria semelhante a:

select * from table
where NOT (tester <=> 'username')
Viktor Zeman
fonte
Sim !, esta é a única coisa que funciona para mim, porque tenho uma cadeia de e's. Não conhecia o operador <=>. Obrigado!
varta,
Só notei que a <=>operadora só existe no MySQLmundo, para mais informações veja o que é <=>
Top-Master
8
select * from table
where tester NOT LIKE '%username%';
Ömer Faruk Almalı
fonte
7

A strcompfunção pode ser apropriada aqui (retorna 0 quando as strings são idênticas):

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

Outra forma de obter os resultados

SELECT * from table WHERE SUBSTRING(tester, 1, 8)  <> 'username' or tester is null
karthik kasubha
fonte