sql >> Databasteknik >  >> RDS >> Database

SQL är lika med (=) operatör för nybörjare

Lika-operatorn (= ) är förmodligen den mest använda operatorn i SQL. Den jämför likheten mellan två uttryck. Även om du precis har börjat din SQL-resa, känner du förmodligen den här operatorn.

Källtabell

Föreställ dig att vår databas innehåller följande tabell. Det här är tabellen vi kommer att använda för exemplen på den här sidan.

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)

Exempel

Om vi ​​ville få alla husdjur med en viss ägare kunde vi göra detta:

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

Vår fråga använder operatorn equals (= ) för att jämföra likheten mellan värdet på OwnerId kolumn och 3 .

I det här fallet har ägare nummer 3 3 husdjur.

Strängar

När du jämför med ett strängvärde, använd citattecken runt strängen. Om vi ​​till exempel vill få information om alla husdjur som heter Fluffy, kan vi göra följande:

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

Vår fråga använder operatorn equals (= ) för att jämföra likheten mellan värdet på PetName kolumn och strängen Fluffy .

I vårt fall kan vi se att djurhotellet för närvarande har två husdjur som heter Fluffy.

Flera villkor

Om du har flera villkor kan du använda flera lika-operatorer.

Så här:

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 att det returnerade raderna där PetName kolumnen var antingen Fluffig eller Tweet .

Negerar villkoret

Du kan använda NOT operatör för att upphäva villkoret som tillhandahålls av lika-operatören. Här är ett exempel:

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

Ett alternativt sätt att göra detta är att använda operatorn inte lika med, som antingen är <> eller != (eller båda) beroende på ditt DBMS.

NULL-värden

Du kanske har märkt att vår ursprungliga exempeltabell innehåller ett par NULL värden i DOB-kolumnen.

En kolumn som innehåller NULL betyder att det inte har något värde. Detta skiljer sig från 0 eller false , eller till och med en tom sträng.

Du kan inte använda lika-operatorn för att jämföra med NULL . Egentligen kan detta bero på ditt DBMS och dess konfiguration. Men nu, låt oss titta på vad som händer om jag försöker jämföra DOB-kolumnen med NULL .

SELECT * FROM Pets 
WHERE DOB = NULL;

Resultat:

(0 rows affected)

Sättet att testa för NULL är att använda IS .

Därför skulle vi behöva skriva om ovanstående uttalande enligt följande.

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ärderingar kan vara en svår sak för nybörjare att få reda på. Egentligen kan de vara en knepig sak för erfarna utvecklare att få reda på! I SQL, NULL har en något annan betydelse än NULL i de flesta andra programmeringsspråk.

Men det viktiga att komma ihåg är att i SQL, NULL betyder avsaknaden av ett värde. Det finns inget värde. Därför kan vi inte säga att det är lika eller inte lika med något annat, eftersom det inte finns något värde att börja med.

Om du är intresserad, se SQL Server ANSI_NULLS Explained för att se hur du kan ändra sättet NULL värden behandlas i SQL Server.


  1. Vad är nolltecken bokstavlig i TSQL?

  2. Föråldrade funktioner att ta ur din verktygslåda – Del 2

  3. Hur man installerar Kubernetes med Kubeadm

  4. INFOGA I ... VÄLJ FRÅN ... PÅ DUPLIKATNYCKELUPPDATERING