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

SQL ikke lig med (!=) Operator for begyndere

I SQL er operatoren ikke lig med (!= ) sammenligner uligheden mellem to udtryk. Det vil sige, det tester, om et udtryk ikke er lig med et andet udtryk.

Hvis den ene eller begge operander er NULL , NULL er returneret.

SQL har også en anden ikke lig med operator (<> ), som gør det samme. Hvilken du bruger kan afhænge af dit DBMS, hvilken du er mest komfortabel med at bruge, og måske også om din organisation har nogle kodningskonventioner, der dikterer, hvilken der skal bruges.

Kildetabel

Forestil dig, at vores database indeholder følgende tabel. Dette er den tabel, vi vil bruge til eksemplerne på denne side.

SELECT * FROM Owners;

Resultat:

+-----------+-------------+------------+----------------+-------------------+
| 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]  |
+-----------+-------------+------------+----------------+-------------------+

Eksempel

Hvis vi ønskede at returnere en liste over alle ejere, der ikke har et OwnerId af 3 , kunne vi gøre dette:

SELECT *
FROM Owners
WHERE OwnerId != 3;

Resultat:

+-----------+-------------+------------+----------------+-------------------+
| 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]  |
+-----------+-------------+------------+----------------+-------------------+

Vores forespørgsel bruger operatoren ikke lig med (!= ) for at teste, om OwnerId kolonne er ikke lig med 3 . Forespørgslen returnerer alle ejere undtagen ejer nummer 3.

Strings

Når du sammenligner med en strengværdi, skal du bruge anførselstegn omkring strengen. For eksempel, hvis vi ønskede at få information om alle ejere, hvis fornavn ikke er Homer, kunne vi gøre følgende:

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

Resultat:

+-----------+-------------+------------+----------------+-------------------+
| 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]  |
+-----------+-------------+------------+----------------+-------------------+

Flere betingelser

Hvis du har flere betingelser, kan du bruge flere operatorer (både de samme operatorer eller forskellige).

Sådan:

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

Resultat:

+-----------+-------------+------------+----------------+-------------------+
| 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]  |
+-----------+-------------+------------+----------------+-------------------+

Når du begynder at bruge flere betingelser, skal du bruge parenteser til at omgive de betingelser, som du ønsker at blive evalueret først. Hvis du ikke gør dette, kan du opleve, at du får uventede resultater på grund af betingelserne, der evalueres i en rækkefølge, som du ikke havde til hensigt.

Negation af betingelsen

Hvis du bruger NOT operatør for at ophæve betingelsen givet af ikke lig med operatoren, vil du ende med at få resultaterne af lig (= ) operatør:

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

Resultat:

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

I dette tilfælde er du bedre stillet ved bare at bruge lig (= ) operatør, som denne:

SELECT *
FROM Owners
WHERE FirstName = 'Homer';

Selvfølgelig kan dette i sig selv blive negeret med NOT operator, hvilket så ville give os det samme resultat, som ikke er lig med (!= ) giver os:

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

NULL-værdier

Du har måske bemærket, at vores originale eksempeltabel indeholder et par NULL værdier i E-mail kolonne.

En kolonne, der indeholder NULL betyder, at det ikke har nogen værdi. Dette er anderledes end 0 eller falsk , eller endda en tom streng.

Du kan ikke bruge operatoren ikke lig med til at sammenligne med NULL . Faktisk kan dette afhænge af dit DBMS og dets konfiguration. Men for nu, lad os se på, hvad der sker, hvis jeg prøver at sammenligne E-mail kolonne til NULL .

SELECT * FROM Owners 
WHERE Email != NULL;

Resultat:

(0 rows affected)

Måden at teste for ikke-NULL værdier er at bruge IS NOT NULL .

Derfor er vi nødt til at omskrive ovenstående erklæring som følger.

SELECT * FROM Owners 
WHERE Email IS NOT NULL;

Resultat:

+-----------+-------------+------------+----------------+-------------------+
| 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]  |
+-----------+-------------+------------+----------------+-------------------+

Nu får vi kun de rækker, der ikke er NULL i E-mail kolonne.

Hvis du er interesseret, se SQL Server ANSI_NULLS Forklaret for at se, hvordan du kan ændre måden NULL på værdier behandles i SQL Server.


  1. Inspicering af slutningen af ​​en lang variabel værdi i VBA

  2. Sådan overføres en null-variabel til en SQL Stored Procedure fra C#.net-kode

  3. Sådan fjerner du en kolonne i SQL Server ved hjælp af T-SQL

  4. MIN() Funktion i MariaDB