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.


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

42

Prueba la siguiente consulta

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

20

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

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

¡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


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;

1

Otra forma de obtener los resultados

SELECT * from table WHERE SUBSTRING(tester, 1, 8)  <> 'username' or tester is null
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.