152 votes

SQL : Comment effectuer une chaîne n'est pas égale

J'ai la requête suivante

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

Je m'attends à ce que cela renvoie tous les résultats où tester n'est pas la chaîne de caractères. username Mais cela ne fonctionne pas. Je pense que je cherche l'inverse de l'indice Like mais je ne suis pas sûr ? Dans mes recherches, j'ai trouvé des solutions pour les nombres (c'est de là que je tiens <>), mais cela ne semble pas fonctionner avec les chaînes de caractères.

223voto

Gordon Linoff Points 213350

Votre where retournera toutes les lignes où tester ne correspond pas à username ET où tester n'est pas nulle.

Si vous voulez inclure les NULL, essayez :

where tester <> 'username' or tester is null

Si vous recherchez des chaînes de caractères qui ne contiennent pas le mot "username" comme sous-chaîne, alors like peut être utilisé :

where tester not like '%username%'

44voto

Shah Rizan Points 19

Essayez la requête suivante

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

27voto

Viktor Zeman Points 419

La condition NULL-safe ressemblerait à ceci :

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

8voto

select * from table
where tester NOT LIKE '%username%';

7voto

user3088463 Points 91

El strcomp peut être appropriée ici (renvoie 0 lorsque les chaînes sont identiques) :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X