SQL: cómo realizar una cadena no es igual

114

Tengo la siguiente consulta

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

Espero que esto devuelva todos los resultados donde el probador no es la cadena username, pero esto no funciona. Creo que estoy buscando la inversa del Likeoperador pero no estoy seguro. En mis búsquedas, he encontrado soluciones para números (de ahí es de donde obtuve <>), pero parece que esto no funciona con cadenas.

Dan Ciborowski - MSFT
fuente
5
¿Los valores están teniendo problemas con los NULLvalores? ( NULL <> 'username' => NULL=> falso)?
Wrikken

Respuestas:

174

Su wherecláusula devolverá todas las filas donde testerno coincida usernameY donde testerno sea nulo.

Si desea incluir NULL, intente:

where tester <> 'username' or tester is null

Si está buscando cadenas que no contengan la palabra "nombre de usuario" como subcadena, se likepueden utilizar:

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

Prueba la siguiente consulta

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

La condición de seguridad NULL se vería así:

select * from table
where NOT (tester <=> 'username')
Viktor Zeman
fuente
¡Sí !, esto es lo único que me funciona, porque tengo una cadena de y. No conocía al operador <=>. ¡Gracias!
varta
Acabo de notar que el <=>operador solo existe en el MySQLmundo, para obtener más información, vea lo que es <=>
Top-Master
8
select * from table
where tester NOT LIKE '%username%';
Ömer Faruk Almalı
fuente
7

los strcomp función puede ser apropiada aquí (devuelve 0 cuando las cadenas son idénticas):

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

Otra forma de obtener los resultados

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