sql >> Database >  >> RDS >> Database

SQL niet gelijk aan (!=) Operator voor beginners

In SQL is de operator niet gelijk aan (!= ) vergelijkt de niet-gelijkheid van twee uitdrukkingen. Dat wil zeggen, het test of een uitdrukking niet . is gelijk aan een andere uitdrukking.

Als een of beide operanden NULL zijn , NULL wordt geretourneerd.

SQL heeft ook een andere die niet gelijk is aan de operator (<> ), die hetzelfde doet. Welke u gebruikt, hangt mogelijk af van uw DBMS, welke u het prettigst gebruikt en misschien ook of uw organisatie codeerconventies heeft die bepalen welke moet worden gebruikt.

Brontabel

Stel je voor dat onze database de volgende tabel bevat. Dit is de tabel die we zullen gebruiken voor de voorbeelden op deze pagina.

SELECT * FROM Owners;

Resultaat:

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

Voorbeeld

Als we een lijst willen terugsturen van alle eigenaren die geen OwnerId . hebben van 3 , we zouden dit kunnen doen:

SELECT *
FROM Owners
WHERE OwnerId != 3;

Resultaat:

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

Onze query gebruikt de operator niet gelijk aan (!= ) om te testen of de OwnerId kolom is niet gelijk aan 3 . De zoekopdracht retourneert alle eigenaren behalve eigenaar nummer 3.

Snaren

Gebruik aanhalingstekens rond de tekenreeks wanneer u deze vergelijkt met een tekenreekswaarde. Als we bijvoorbeeld informatie willen krijgen over alle eigenaren wiens voornaam niet Homer is, kunnen we het volgende doen:

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

Resultaat:

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

Meerdere voorwaarden

Als u meerdere voorwaarden heeft, kunt u meerdere operators gebruiken (zowel dezelfde operators als verschillende).

Zoals dit:

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

Resultaat:

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

Zodra u meer voorwaarden gaat gebruiken, moet u haakjes gebruiken om de voorwaarden die u als eerste wilt evalueren, te omringen. Als je dit niet doet, kan het zijn dat je onverwachte resultaten krijgt, omdat de omstandigheden worden geëvalueerd in een volgorde die je niet van plan was.

Negating the condition

Als u de NOT . gebruikt operator om de voorwaarde van de operator niet gelijk aan te ontkennen, krijgt u uiteindelijk de resultaten van de gelijken (= ) operator:

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

Resultaat:

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

In dit geval kunt u beter gewoon de gelijken gebruiken (= ) operator, als volgt:

SELECT *
FROM Owners
WHERE FirstName = 'Homer';

Dit kan natuurlijk zelf teniet gedaan worden met de NOT operator, die ons dan hetzelfde resultaat zou geven dat niet gelijk is aan (!= ) operator geeft ons:

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

NULL-waarden

Het is je misschien opgevallen dat onze originele voorbeeldtabel een paar NULL . bevat waarden in de Email kolom.

Een kolom met NULL betekent dat het geen waarde heeft. Dit is anders dan 0 of false , of zelfs een lege string.

U kunt de operator niet gelijk aan gebruiken om te vergelijken met NULL . Dit kan in feite afhangen van uw DBMS en de configuratie ervan. Maar laten we voor nu eens kijken wat er gebeurt als ik de Email . probeer te vergelijken kolom naar NULL .

SELECT * FROM Owners 
WHERE Email != NULL;

Resultaat:

(0 rows affected)

De manier om te testen op niet-NULL waarden is om IS NOT NULL te gebruiken .

Daarom zouden we de bovenstaande verklaring als volgt moeten herschrijven.

SELECT * FROM Owners 
WHERE Email IS NOT NULL;

Resultaat:

+-----------+-------------+------------+----------------+-------------------+
| 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 krijgen we alleen die rijen die niet NULL . zijn in de Email kolom.

Als je geïnteresseerd bent, bekijk dan SQL Server ANSI_NULLS Explained om te zien hoe je de manier kunt veranderen NULL waarden worden behandeld in SQL Server.


  1. Converteer maandnummer naar maandnaam in PostgreSQL

  2. SQL2008 RDL-bestand converteren naar SQL2005

  3. GROUP BY in Postgres - geen gelijkheid voor JSON-gegevenstype?

  4. Sqlite voegt geen gegevens in de 2e tabel in