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.


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%'

42

Tente a seguinte consulta

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

20

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

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

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


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;

1

Outra forma de obter os resultados

SELECT * from table WHERE SUBSTRING(tester, 1, 8)  <> 'username' or tester is null
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.