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

SQL er lig med (=) operatør for begyndere

Lige-operatoren (= ) er nok den mest brugte operator i SQL. Den sammenligner ligheden mellem to udtryk. Selvom du kun lige er begyndt på din SQL-rejse, kender du sikkert denne operator.

Kildetabel

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

SELECT * FROM Pets;

Resultat:

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

Eksempel

Hvis vi ønskede at få alle kæledyr med en bestemt ejer, kunne vi gøre dette:

SELECT *
FROM Pets
WHERE OwnerId = 3;

Resultat:

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

Vores forespørgsel bruger lig-operatoren (= ) for at sammenligne ligheden mellem værdien af ​​OwnerId kolonne og 3 .

I dette tilfælde har ejer nummer 3 3 kæledyr.

Strenge

Når du sammenligner med en strengværdi, skal du bruge anførselstegn omkring strengen. For eksempel, hvis vi ønskede at få oplysninger om alle kæledyr ved navn Fluffy, kunne vi gøre følgende:

SELECT *
FROM Pets
WHERE PetName = 'Fluffy';

Resultat:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
+---------+-------------+-----------+-----------+------------+

Vores forespørgsel bruger lig-operatoren (= ) for at sammenligne ligheden mellem værdien af ​​PetName kolonne og strengen Fluffy .

I vores tilfælde kan vi se, at dyrehotellet i øjeblikket har to kæledyr kaldet Fluffy.

Flere betingelser

Hvis du har flere betingelser, kan du bruge flere lig-operatorer.

Sådan:

SELECT * FROM Pets 
WHERE PetName = 'Fluffy' OR PetName = 'Tweet';

Resultat:

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

Vi kan se, at det returnerede rækkerne, hvor PetName kolonne var enten Fluffy eller Tweet .

Nægter betingelsen

Du kan bruge NOT operatør for at ophæve betingelsen stillet af lige-operatøren. Her er et eksempel:

SELECT *
FROM Pets
WHERE NOT PetName = 'Fluffy';

Resultat:

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

En alternativ måde at gøre dette på er at bruge operatoren ikke lig med, som enten er <> eller != (eller begge) afhængigt af dit DBMS.

NULL-værdier

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

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 equals-operatoren 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 DOB-kolonnen med NULL .

SELECT * FROM Pets 
WHERE DOB = NULL;

Resultat:

(0 rows affected)

Måden at teste for NULL er at bruge IS .

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

SELECT * FROM Pets 
WHERE DOB IS NULL;

Resultat:

+---------+-------------+-----------+-----------+-------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB   |
|---------+-------------+-----------+-----------+-------|
| 7       | 3           | 2         | Bark      | NULL  |
| 8       | 2           | 4         | Meow      | NULL  |
+---------+-------------+-----------+-----------+-------+

NULL værdier kan være en vanskelig ting for begyndere at få styr på. Faktisk kan de være en vanskelig ting for erfarne udviklere at få styr på! I SQL, NULL har en lidt anden betydning end NULL på de fleste andre programmeringssprog.

Men det vigtige at huske er, at i SQL, NULL betyder manglen på en værdi. Der er ingen værdi. Derfor kan vi ikke sige, at det er lig med eller ikke er lig med noget andet, for der er ingen værdi at starte med.

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. ORACLE SQL listegg funktion

  2. Er der en SELECT ... INTO OUTFILE tilsvarende i SQL Server Management Studio?

  3. SQLite FINDER

  4. Hvordan får man tabeldefinition i Oracle?