I SQL er mindre end-operatoren (<
) sammenligner to udtryk og returnerer TRUE
hvis venstre operand har en lavere værdi end højre operand; ellers er resultatet FALSE
.
Eksempel
Her er et eksempel til at demonstrere.
SELECT * FROM city
WHERE Population < 600;
Resultat:
+------+--------------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+--------------------+---------------+-------------+--------------| | 62 | The Valley | AIA | – | 595 | | 2316 | Bantam | CCK | Home Island | 503 | | 2317 | West Island | CCK | West Island | 167 | | 2728 | Yaren | NRU | – | 559 | | 2912 | Adamstown | PCN | – | 42 | | 3333 | Fakaofo | TKL | Fakaofo | 300 | | 3538 | Città del Vaticano | VAT | – | 455 | +------+--------------------+---------------+-------------+--------------+
Denne forespørgsel returnerer alle byer, der har en befolkning på mindre end 600.
Eksklusiv
Operatoren mindre end inkluderer ikke den angivne værdi i sin evaluering.
For eksempel returnerer følgende eksempel ikke Fakaofo, som har en befolkning på 300:
SELECT * FROM city
WHERE Population < 300;
Resultat:
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | +------+-------------+---------------+-------------+--------------+
For at inkludere byer med en befolkning på 300 skal vi øge vores specificerede værdi:
SELECT * FROM city
WHERE Population < 301;
Resultat:
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | | 3333 | Fakaofo | TKL | Fakaofo | 300 | +------+-------------+---------------+-------------+--------------+
Datoer
Her er et eksempel for at demonstrere brugen af mindre end-operatoren til at sammenligne datoværdier.
SELECT PetName, DOB
FROM Pets
WHERE DOB < '2020-01-01';
Resultat:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | +-----------+------------+
Strenge
Du kan også bruge mindre end-operatoren til at sammenligne strengværdier. Når du sammenligner med en strengværdi, skal du bruge anførselstegn omkring strengen.
SELECT * FROM city
WHERE Name < 'Ab';
Resultat:
+------+------------------------------+---------------+---------------------+--------------+ | ID | Name | CountryCode | District | Population | |------+------------------------------+---------------+---------------------+--------------| | 20 | ´s-Hertogenbosch | NLD | Noord-Brabant | 129170 | | 548 | Šumen | BGR | Varna | 94686 | | 670 | A Coruña (La Coruña) | ESP | Galicia | 243402 | | 698 | [San Cristóbal de] la Laguna | ESP | Canary Islands | 127945 | | 2450 | Šiauliai | LTU | Šiauliai | 146563 | | 3097 | Aachen | DEU | Nordrhein-Westfalen | 243825 | | 3318 | Aalborg | DNK | Nordjylland | 161161 | | 3479 | Šostka | UKR | Sumy | 90000 | | 3665 | Šahty | RUS | Rostov-na-Donu | 221800 | | 3736 | Štšolkovo | RUS | Moskova | 104900 | +------+------------------------------+---------------+---------------------+--------------+
Denne forespørgsel returnerer alle byer, der er mindre end Ab
. Grundlæggende returnerer den alle byer, der starter med bogstaver lavere end Ab
.
Flere betingelser
Hvis du har flere betingelser, kan du bruge flere mindre end operatorer.
Sådan:
SELECT * FROM city
WHERE Name < 'Ab' AND Population < 100000;
Resultat:
+------+--------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+--------+---------------+------------+--------------| | 548 | Šumen | BGR | Varna | 94686 | | 3479 | Šostka | UKR | Sumy | 90000 | +------+--------+---------------+------------+--------------+
Forrang
Du kan også bruge en kombination af operatorer, når du filtrerer resultaterne.
Bemærk, at SQL har en rækkefølge, som den tildeler til forskellige operatortyper. For eksempel evaluerer den eventuelle betingede operatorer før logiske operatorer, såsom AND
og OR
. Den evaluerer også enhver AND
operatorer før enhver OR
operatører.
Parenteser har en højere prioritet end alle operatorer, og du kan derfor bruge parenteser til at angive den rækkefølge, som hver betingelse skal evalueres i.
Overvej følgende eksempel:
SELECT * FROM city
WHERE Name < 'Ab'
AND Population < 100000
OR District = 'Canary Islands';
Resultat:
+------+------------------------------+---------------+----------------+--------------+ | ID | Name | CountryCode | District | Population | |------+------------------------------+---------------+----------------+--------------| | 548 | Šumen | BGR | Varna | 94686 | | 660 | Las Palmas de Gran Canaria | ESP | Canary Islands | 354757 | | 672 | Santa Cruz de Tenerife | ESP | Canary Islands | 213050 | | 698 | [San Cristóbal de] la Laguna | ESP | Canary Islands | 127945 | | 3479 | Šostka | UKR | Sumy | 90000 | +------+------------------------------+---------------+----------------+--------------+
I denne forespørgsel angav jeg ingen parenteser, og derfor AND
operatoren blev evalueret før OR
operatør.
Derfor fik vi rækker, der opfyldte enten Name < 'Ab' AND Population < 100000
eller District = 'Canary Islands'
. Bare ved at se på dette kan vi se, at alle byer fra De Kanariske Øer vil blive returneret, plus alle byer, der opfylder de første kriterier.
Det er ligesom at gøre følgende:
SELECT * FROM city
WHERE (Name < 'Ab'
AND Population < 100000)
OR District = 'Canary Islands';
Det ville give os det samme resultat som den forrige forespørgsel uden parentes.
Men se, hvad der sker, når vi flytter parenteserne til OR
tilstand.
SELECT * FROM city
WHERE Name < 'Ab'
AND (Population < 100000
OR District = 'Canary Islands');
Resultat:
+------+------------------------------+---------------+----------------+--------------+ | ID | Name | CountryCode | District | Population | |------+------------------------------+---------------+----------------+--------------| | 548 | Šumen | BGR | Varna | 94686 | | 698 | [San Cristóbal de] la Laguna | ESP | Canary Islands | 127945 | | 3479 | Šostka | UKR | Sumy | 90000 | +------+------------------------------+---------------+----------------+--------------+
Denne gang fik vi kun de byer, der tilfredsstillede både Population < 100000 OR District = 'Canary Islands'
og Name < 'Ab'
.
Nægter betingelsen
Du kan bruge NOT
operatør for at ophæve den betingelse, som stilles til rådighed af den mindre end operatør. Her er et eksempel:
SELECT PetName, DOB
FROM Pets
WHERE NOT DOB < '2019-12-31';
Resultat:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fluffy | 2020-11-20 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | +-----------+------------+