Database
 sql >> Database >  >> RDS >> Database

SQL diverso da (!=) Operatore per principianti

In SQL, l'operatore diverso da (!= ) confronta la non uguaglianza di due espressioni. Cioè, verifica se un'espressione è non uguale a un'altra espressione.

Se uno o entrambi gli operandi sono NULL , NULL viene restituito.

SQL ha anche un altro operatore diverso da (<> ), che fa la stessa cosa. Quale usi può dipendere dal tuo DBMS, quale ti senti più a tuo agio nell'usare e forse anche se la tua organizzazione ha delle convenzioni di codifica che stabiliscono quale dovrebbe essere utilizzato.

Tabella di origine

Immagina che il nostro database contenga la seguente tabella. Questa è la tabella che useremo per gli esempi in questa pagina.

SELECT * FROM Owners;

Risultato:

+-----------+-------------+------------+----------------+-------------------+
| OwnerId   | FirstName   | LastName   | Phone          | Email             |
|-----------+-------------+------------+----------------+-------------------|
| 1         | Homer       | Connery    | (308) 555-0100 | [email protected] |
| 2         | Bart        | Pitt       | (231) 465-3497 | [email protected]  |
| 3         | Nancy       | Simpson    | (489) 591-0408 | NULL              |
| 4         | Boris       | Trump      | (349) 611-8908 | NULL              |
| 5         | Woody       | Eastwood   | (308) 555-0112 | [email protected] |
| 6         | Burt        | Tyson      | (309) 565-0112 | [email protected]  |
+-----------+-------------+------------+----------------+-------------------+

Esempio

Se volessimo restituire un elenco di tutti i proprietari che non hanno un OwnerId di 3 , potremmo farlo:

SELECT *
FROM Owners
WHERE OwnerId != 3;

Risultato:

+-----------+-------------+------------+----------------+-------------------+
| OwnerId   | FirstName   | LastName   | Phone          | Email             |
|-----------+-------------+------------+----------------+-------------------|
| 1         | Homer       | Connery    | (308) 555-0100 | [email protected] |
| 2         | Bart        | Pitt       | (231) 465-3497 | [email protected]  |
| 4         | Boris       | Trump      | (349) 611-8908 | NULL              |
| 5         | Woody       | Eastwood   | (308) 555-0112 | [email protected] |
| 6         | Burt        | Tyson      | (309) 565-0112 | [email protected]  |
+-----------+-------------+------------+----------------+-------------------+

La nostra query utilizza l'operatore diverso da (!= ) per verificare se il OwnerId la colonna non è uguale a 3 . La query restituisce tutti i proprietari tranne il numero di proprietario 3.

Stringhe

Quando si confronta con un valore stringa, utilizzare le virgolette attorno alla stringa. Ad esempio, se volessimo ottenere informazioni su tutti i proprietari il cui nome non è Homer, potremmo fare quanto segue:

SELECT *
FROM Owners
WHERE FirstName != 'Homer';

Risultato:

+-----------+-------------+------------+----------------+-------------------+
| OwnerId   | FirstName   | LastName   | Phone          | Email             |
|-----------+-------------+------------+----------------+-------------------|
| 2         | Bart        | Pitt       | (231) 465-3497 | [email protected]  |
| 3         | Nancy       | Simpson    | (489) 591-0408 | NULL              |
| 4         | Boris       | Trump      | (349) 611-8908 | NULL              |
| 5         | Woody       | Eastwood   | (308) 555-0112 | [email protected] |
| 6         | Burt        | Tyson      | (309) 565-0112 | [email protected]  |
+-----------+-------------+------------+----------------+-------------------+

Condizioni multiple

Se hai più condizioni, puoi utilizzare più operatori (sia gli stessi operatori che diversi).

In questo modo:

SELECT * FROM Owners 
WHERE OwnerId != 1 AND OwnerId != 3;

Risultato:

+-----------+-------------+------------+----------------+-------------------+
| OwnerId   | FirstName   | LastName   | Phone          | Email             |
|-----------+-------------+------------+----------------+-------------------|
| 2         | Bart        | Pitt       | (231) 465-3497 | [email protected]  |
| 4         | Boris       | Trump      | (349) 611-8908 | NULL              |
| 5         | Woody       | Eastwood   | (308) 555-0112 | [email protected] |
| 6         | Burt        | Tyson      | (309) 565-0112 | [email protected]  |
+-----------+-------------+------------+----------------+-------------------+

Una volta che inizi a utilizzare più condizioni, dovresti usare le parentesi per racchiudere le condizioni che desideri vengano valutate per prime. Se non lo fai, potresti scoprire di ottenere risultati inaspettati, a causa delle condizioni valutate in un ordine che non avevi previsto.

Negazione della condizione

Se usi il NOT per negare la condizione fornita dall'operatore diverso da, finirai per ottenere i risultati di uguale (= ) operatore:

SELECT *
FROM Owners
WHERE NOT FirstName != 'Homer';

Risultato:

+-----------+-------------+------------+----------------+-------------------+
| OwnerId   | FirstName   | LastName   | Phone          | Email             |
|-----------+-------------+------------+----------------+-------------------|
| 1         | Homer       | Connery    | (308) 555-0100 | [email protected] |
+-----------+-------------+------------+----------------+-------------------+

In questo caso, è meglio usare solo l'uguale (= ) operatore, in questo modo:

SELECT *
FROM Owners
WHERE FirstName = 'Homer';

Naturalmente, questo stesso potrebbe essere negato con NOT operatore, che ci darebbe lo stesso risultato che non è uguale a (!= ) l'operatore ci fornisce:

SELECT *
FROM Owners
WHERE NOT FirstName = 'Homer';

Valori NULL

Potresti aver notato che la nostra tabella di esempio originale contiene un paio di NULL valori nella Email colonna.

Una colonna contenente NULL significa che non ha valore. Questo è diverso da 0 o false o anche una stringa vuota.

Non puoi utilizzare l'operatore diverso da per confrontare con NULL . In realtà, questo potrebbe dipendere dal tuo DBMS e dalla sua configurazione. Ma per ora, diamo un'occhiata a cosa succede se provo a confrontare l'Email colonna su NULL .

SELECT * FROM Owners 
WHERE Email != NULL;

Risultato:

(0 rows affected)

Il modo per verificare se non NULL valori consiste nell'usare IS NOT NULL .

Pertanto, dovremmo riscrivere la dichiarazione di cui sopra come segue.

SELECT * FROM Owners 
WHERE Email IS NOT NULL;

Risultato:

+-----------+-------------+------------+----------------+-------------------+
| OwnerId   | FirstName   | LastName   | Phone          | Email             |
|-----------+-------------+------------+----------------+-------------------|
| 1         | Homer       | Connery    | (308) 555-0100 | [email protected] |
| 2         | Bart        | Pitt       | (231) 465-3497 | [email protected]  |
| 5         | Woody       | Eastwood   | (308) 555-0112 | [email protected] |
| 6         | Burt        | Tyson      | (309) 565-0112 | [email protected]  |
+-----------+-------------+------------+----------------+-------------------+

Ora otteniamo solo quelle righe che non sono NULL nella Email colonna.

Se sei interessato, vedi SQL Server ANSI_NULLS Explained per vedere come puoi cambiare il modo NULL i valori vengono trattati in SQL Server.