I SQL er den større end eller lig med operatoren (>=
) sammenligner to udtryk og returnerer TRUE
hvis venstre operand har en værdi større end eller lig med højre operand; ellers returnerer den FALSE
.
Eksempel
Her er et eksempel til at demonstrere.
SELECT * FROM city
WHERE Population >= 9269265
ORDER BY Population ASC;
Resultat:
+------+-----------------+---------------+--------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-----------------+---------------+--------------+--------------| | 2822 | Karachi | PAK | Sindh | 9269265 | | 939 | Jakarta | IDN | Jakarta Raya | 9604900 | | 1890 | Shanghai | CHN | Shanghai | 9696300 | | 206 | São Paulo | BRA | São Paulo | 9968485 | | 2331 | Seoul | KOR | Seoul | 9981619 | | 1024 | Mumbai (Bombay) | IND | Maharashtra | 10500000 | +------+-----------------+---------------+--------------+--------------+
Denne forespørgsel returnerer alle byer, der har en befolkning på mere end eller lig med 9269265.
Inklusiv
Operatoren større end eller lig med inkluderer den angivne værdi i sin evaluering.
For eksempel omfattede den tidligere forespørgsel Karachi, som ifølge denne database har en befolkning på præcis 9269265.
Hvis vi ville udelukke byer med denne befolkning, ville vi enten være nødt til at øge den angivne værdi:
SELECT * FROM city
WHERE Population >= 9269266
ORDER BY Population ASC;
Resultat:
+------+-----------------+---------------+--------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-----------------+---------------+--------------+--------------| | 939 | Jakarta | IDN | Jakarta Raya | 9604900 | | 1890 | Shanghai | CHN | Shanghai | 9696300 | | 206 | São Paulo | BRA | São Paulo | 9968485 | | 2331 | Seoul | KOR | Seoul | 9981619 | | 1024 | Mumbai (Bombay) | IND | Maharashtra | 10500000 | +------+-----------------+---------------+--------------+--------------+
Eller vi kunne simpelthen bruge større end (>
) operatør i stedet:
SELECT * FROM city
WHERE Population > 9269265
ORDER BY Population ASC;
Resultat:
+------+-----------------+---------------+--------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-----------------+---------------+--------------+--------------| | 939 | Jakarta | IDN | Jakarta Raya | 9604900 | | 1890 | Shanghai | CHN | Shanghai | 9696300 | | 206 | São Paulo | BRA | São Paulo | 9968485 | | 2331 | Seoul | KOR | Seoul | 9981619 | | 1024 | Mumbai (Bombay) | IND | Maharashtra | 10500000 | +------+-----------------+---------------+--------------+--------------+
Datoer
Her er et eksempel til at demonstrere brugen af større end eller lig med operatoren til at sammenligne datoværdier.
SELECT PetName, DOB
FROM Pets
WHERE DOB >= '2020-03-15';
Resultat:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fluffy | 2020-11-20 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | +-----------+------------+
Strenge
Du kan også bruge operatoren større end eller lig med 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 >= 'Zukovski'
ORDER BY Name;
Resultat:
+------+----------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+----------+---------------+------------+--------------| | 3756 | Zukovski | RUS | Moskova | 96500 | | 2669 | Zumpango | MEX | México | 99781 | | 2025 | Zunyi | CHN | Guizhou | 261862 | | 3245 | Zürich | CHE | Zürich | 336800 | | 3145 | Zwickau | DEU | Saksi | 104146 | | 28 | Zwolle | NLD | Overijssel | 105819 | | 3446 | Zytomyr | UKR | Zytomyr | 297000 | +------+----------+---------------+------------+--------------+
Flere betingelser
Hvis du har flere betingelser, kan du bruge flere >=
operatører.
Sådan:
SELECT * FROM city
WHERE Name >= 'Zukovski' AND Population >= 200000;
Resultat:
+------+---------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+---------+---------------+------------+--------------| | 2025 | Zunyi | CHN | Guizhou | 261862 | | 3245 | Zürich | CHE | Zürich | 336800 | | 3446 | Zytomyr | UKR | Zytomyr | 297000 | +------+---------+---------------+------------+--------------+
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 >= 'Zukovski'
AND Population >= 100000
OR District = 'Overijssel';
Resultat:
+------+----------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+----------+---------------+------------+--------------| | 15 | Enschede | NLD | Overijssel | 149544 | | 28 | Zwolle | NLD | Overijssel | 105819 | | 2025 | Zunyi | CHN | Guizhou | 261862 | | 3145 | Zwickau | DEU | Saksi | 104146 | | 3245 | Zürich | CHE | Zürich | 336800 | | 3446 | Zytomyr | UKR | Zytomyr | 297000 | +------+----------+---------------+------------+--------------+
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 >= 'Zukovski' AND Population >= 100000
eller District = 'Overijssel'
. Bare ved at se på dette kan vi se, at alle byer fra Overijssel-distriktet 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 >= 'Zukovski'
AND Population >= 100000)
OR District = 'Overijssel';
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 >= 'Zukovski'
AND (Population >= 100000
OR District = 'Overijssel');
Resultat:
+------+---------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+---------+---------------+------------+--------------| | 28 | Zwolle | NLD | Overijssel | 105819 | | 2025 | Zunyi | CHN | Guizhou | 261862 | | 3145 | Zwickau | DEU | Saksi | 104146 | | 3245 | Zürich | CHE | Zürich | 336800 | | 3446 | Zytomyr | UKR | Zytomyr | 297000 | +------+---------+---------------+------------+--------------+
Denne gang fik vi kun de byer, der tilfredsstillede både Population >= 100000 OR District = 'Overijssel'
og Name >= 'Overijssel'
.
Dette resulterede i, at kun én by fra Overijssel blev returneret, i modsætning til to i den forrige forespørgsel.
Nægter betingelsen
Du kan bruge NOT
operatør for at ophæve betingelsen fra >=
operatør. Her er et eksempel:
SELECT PetName, DOB
FROM Pets
WHERE NOT DOB >= '2019-12-31';
Resultat:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | +-----------+------------+