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.