SQL: come eseguire la stringa non è uguale


114

Ho la seguente domanda

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

Mi aspetto che questo restituisca tutti i risultati in cui il tester non è la stringa username, ma questo non funziona. Penso di cercare l'inverso Likedell'operatore ma non sono sicuro? Nelle mie ricerche ho trovato soluzioni per i numeri (è da lì che ho ottenuto <>), ma questo sembra non funzionare con le stringhe.


5
I valori che stai avendo problemi con i NULLvalori? ( NULL <> 'username' => NULL=> falso)?
Wrikken

Risposte:


174

La tua whereclausola restituirà tutte le righe in cui testernon corrisponde usernameE dove testernon è nulla.

Se vuoi includere NULL, prova:

where tester <> 'username' or tester is null

Se stai cercando stringhe che non contengono la parola "nome utente" come sottostringa, likepuoi utilizzare:

where tester not like '%username%'

42

Prova la seguente query

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

20

La condizione NULL-safe sarebbe simile a:

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

Sì !, questa è l'unica cosa che funziona per me, perché ho una catena di e. Non conoscevo l'operatore <=>. Grazie!
varta

Ho appena notato che l' <=>operatore esiste solo nel MySQLmondo, per maggiori informazioni vedi cos'è <=>
Top-Master


7

La strcompfunzione può essere appropriata qui (restituisce 0 quando le stringhe sono identiche):

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

1

Un altro modo per ottenere i risultati

SELECT * from table WHERE SUBSTRING(tester, 1, 8)  <> 'username' or tester is null
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.