De operator is gelijk aan (=
) is waarschijnlijk de meest gebruikte operator in SQL. Het vergelijkt de gelijkheid van twee uitdrukkingen. Zelfs als u nog maar net aan uw SQL-reis bent begonnen, kent u deze operator waarschijnlijk wel.
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 Pets;
Resultaat:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +---------+-------------+-----------+-----------+------------+ (8 rows affected)
Voorbeeld
Als we alle huisdieren bij een bepaald baasje wilden krijgen, dan zouden we dit kunnen doen:
SELECT *
FROM Pets
WHERE OwnerId = 3;
Resultaat:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | | 4 | 3 | 3 | Wag | 2020-03-15 | +---------+-------------+-----------+-----------+------------+
Onze query gebruikt de operator is gelijk aan (=
) om de gelijkheid van de waarde van de OwnerId
. te vergelijken kolom en 3
.
In dit geval heeft eigenaar nummer 3 3 huisdieren.
Snaren
Gebruik aanhalingstekens rond de tekenreeks wanneer u deze vergelijkt met een tekenreekswaarde. Als we bijvoorbeeld informatie willen krijgen over alle huisdieren met de naam Fluffy, kunnen we het volgende doen:
SELECT *
FROM Pets
WHERE PetName = 'Fluffy';
Resultaat:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | +---------+-------------+-----------+-----------+------------+
Onze query gebruikt de operator is gelijk aan (=
) om de gelijkheid van de waarde van de PetName
. te vergelijken kolom en de tekenreeks Fluffy
.
In ons geval kunnen we zien dat het dierenhotel momenteel twee huisdieren heeft, genaamd Fluffy.
Meerdere voorwaarden
Als je meerdere voorwaarden hebt, kun je meerdere is gelijk aan operators gebruiken.
Zoals dit:
SELECT * FROM Pets
WHERE PetName = 'Fluffy' OR PetName = 'Tweet';
Resultaat:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | +---------+-------------+-----------+-----------+------------+
We kunnen zien dat het de rijen retourneerde waar de PetName
kolom was ofwel Fluffy
of Tweet
.
De voorwaarde negeren
U kunt de NOT
. gebruiken operator om de voorwaarde van de is gelijk aan operator teniet te doen. Hier is een voorbeeld:
SELECT *
FROM Pets
WHERE NOT PetName = 'Fluffy';
Resultaat:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +---------+-------------+-----------+-----------+------------+
Een alternatieve manier om dit te doen is om de operator niet gelijk aan te gebruiken, namelijk <>
of !=
(of beide) afhankelijk van uw DBMS.
NULL-waarden
Het is je misschien opgevallen dat onze originele voorbeeldtabel een paar NULL
. bevat waarden in de DOB-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 is gelijk aan niet 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 DOB-kolom probeer te vergelijken met NULL
.
SELECT * FROM Pets
WHERE DOB = NULL;
Resultaat:
(0 rows affected)
De manier om te testen op NULL
is om IS
. te gebruiken .
Daarom zouden we de bovenstaande verklaring als volgt moeten herschrijven.
SELECT * FROM Pets
WHERE DOB IS NULL;
Resultaat:
+---------+-------------+-----------+-----------+-------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+-------| | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +---------+-------------+-----------+-----------+-------+
NULL
waarden kunnen voor beginners lastig zijn om hun hoofd rond te krijgen. Eigenlijk kunnen ze voor ervaren ontwikkelaars lastig zijn om hun hoofd erbij te houden! In SQL, NULL
heeft een iets andere betekenis dan NULL
in de meeste andere programmeertalen.
Maar het belangrijkste om te onthouden is dat, in SQL, NULL
betekent het ontbreken van een waarde. Er is geen waarde. Daarom kunnen we niet zeggen dat het gelijk of niet gelijk is aan iets anders, omdat er om te beginnen geen waarde is.
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.