I SQL er større end-operatoren (> ) sammenligner to udtryk og returnerer
TRUE
hvis venstre operand har en højere værdi end højre operand; ellers returnerer den FALSK
.
Eksempel
Her er et eksempel til at demonstrere.
SELECT * FROM city
WHERE Population > 9000000;
Resultat:
+------+-----------------+---------------+--------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-----------------+---------------+--------------+--------------| | 206 | São Paulo | BRA | São Paulo | 9968485 | | 939 | Jakarta | IDN | Jakarta Raya | 9604900 | | 1024 | Mumbai (Bombay) | IND | Maharashtra | 10500000 | | 1890 | Shanghai | CHN | Shanghai | 9696300 | | 2331 | Seoul | KOR | Seoul | 9981619 | | 2822 | Karachi | PAK | Sindh | 9269265 | +------+-----------------+---------------+--------------+--------------+
Denne forespørgsel returnerer alle byer, der har en befolkning på mere end 9 millioner.
Eksklusiv
Større end-operatoren inkluderer ikke den angivne værdi i sin evaluering.
For eksempel returnerer følgende eksempel ikke Karachi, som ifølge denne database har en befolkning på nøjagtigt 9269265:
SELECT * FROM city
WHERE Population > 9269265;
Resultat:
+------+-----------------+---------------+--------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-----------------+---------------+--------------+--------------| | 206 | São Paulo | BRA | São Paulo | 9968485 | | 939 | Jakarta | IDN | Jakarta Raya | 9604900 | | 1024 | Mumbai (Bombay) | IND | Maharashtra | 10500000 | | 1890 | Shanghai | CHN | Shanghai | 9696300 | | 2331 | Seoul | KOR | Seoul | 9981619 | +------+-----------------+---------------+--------------+--------------+
For at inkludere byer med en befolkning på 9269265 skal vi reducere vores angivne værdi:
SELECT * FROM city
WHERE Population > 9269264;
Resultat:
+------+-----------------+---------------+--------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-----------------+---------------+--------------+--------------| | 206 | São Paulo | BRA | São Paulo | 9968485 | | 939 | Jakarta | IDN | Jakarta Raya | 9604900 | | 1024 | Mumbai (Bombay) | IND | Maharashtra | 10500000 | | 1890 | Shanghai | CHN | Shanghai | 9696300 | | 2331 | Seoul | KOR | Seoul | 9981619 | | 2822 | Karachi | PAK | Sindh | 9269265 | +------+-----------------+---------------+--------------+--------------+
Enten det, eller også kunne vi bruge større end eller lig med (>=
) operatør.
SELECT * FROM city
WHERE Population >= 9269265;
Resultat:
+------+-----------------+---------------+--------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-----------------+---------------+--------------+--------------| | 206 | São Paulo | BRA | São Paulo | 9968485 | | 939 | Jakarta | IDN | Jakarta Raya | 9604900 | | 1024 | Mumbai (Bombay) | IND | Maharashtra | 10500000 | | 1890 | Shanghai | CHN | Shanghai | 9696300 | | 2331 | Seoul | KOR | Seoul | 9981619 | | 2822 | Karachi | PAK | Sindh | 9269265 | +------+-----------------+---------------+--------------+--------------+
Datoer
Her er et eksempel til at demonstrere brugen af større end-operatoren til at sammenligne datoværdier.
SELECT PetName, DOB
FROM Pets
WHERE DOB > '2020-01-01';
Resultat:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fluffy | 2020-11-20 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | +-----------+------------+
Strenge
Du kan også bruge større 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 > 'Zukovski'
ORDER BY Name;
Resultat:
+------+----------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+----------+---------------+------------+--------------| | 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 større end-operatorer.
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 ELLER
. Den evaluerer også enhver AND
operatorer før enhver ELLER
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 ELLER
operatør.
Derfor fik vi rækker, der opfyldte enten Name> 'Zukovski' OG 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 ELLER
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 Befolkning> 100000 ELLER Distrikt ='Overijssel'
og Navn> '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 den betingelse, der er stillet til rådighed af den større end operatøren. 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 | +-----------+------------+