V SQL je operátor menší než (<
) porovná dva výrazy a vrátí TRUE
má-li levý operand hodnotu nižší než pravý operand; jinak je výsledek FALSE
.
Příklad
Zde je příklad k demonstraci.
SELECT * FROM city
WHERE Population < 600;
Výsledek:
+------+--------------------+---------------+-------------+--------------+ | 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 | +------+--------------------+---------------+-------------+--------------+
Tento dotaz vrátí všechna města, která mají méně než 600 obyvatel.
Exkluzivní
Operátor menší než nezahrnuje zadanou hodnotu do svého vyhodnocení.
Například následující příklad nevrací Fakaofo, který má 300 obyvatel:
SELECT * FROM city
WHERE Population < 300;
Výsledek:
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | +------+-------------+---------------+-------------+--------------+
Abychom zahrnuli města s 300 obyvateli, museli bychom zvýšit naši specifikovanou hodnotu:
SELECT * FROM city
WHERE Population < 301;
Výsledek:
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | | 3333 | Fakaofo | TKL | Fakaofo | 300 | +------+-------------+---------------+-------------+--------------+
Data
Zde je příklad, který demonstruje použití operátoru menší než k porovnání hodnot data.
SELECT PetName, DOB
FROM Pets
WHERE DOB < '2020-01-01';
Výsledek:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | +-----------+------------+
Řetězce
K porovnání hodnot řetězců můžete také použít operátor menší než. Při porovnávání s hodnotou řetězce použijte kolem řetězce uvozovky.
SELECT * FROM city
WHERE Name < 'Ab';
Výsledek:
+------+------------------------------+---------------+---------------------+--------------+ | 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 | +------+------------------------------+---------------+---------------------+--------------+
Tento dotaz vrátí všechna města, která jsou menší než Ab
. V zásadě vrací všechna města, která začínají písmeny nižšími než Ab
.
Více podmínek
Pokud máte více podmínek, můžete použít více méně než operátorů.
Takhle:
SELECT * FROM city
WHERE Name < 'Ab' AND Population < 100000;
Výsledek:
+------+--------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+--------+---------------+------------+--------------| | 548 | Šumen | BGR | Varna | 94686 | | 3479 | Šostka | UKR | Sumy | 90000 | +------+--------+---------------+------------+--------------+
Prednost
Při filtrování výsledků můžete také použít kombinaci operátorů.
Všimněte si, že SQL má pořadí priority, které přiřazuje různým typům operátorů. Například vyhodnocuje všechny podmíněné operátory před logickými operátory, jako je AND
a OR
. Vyhodnocuje také všechny AND
operátory před libovolným OR
operátory.
Závorky mají vyšší prioritu než všechny operátory, a proto můžete pomocí závorek určit pořadí, ve kterém by měla být každá podmínka vyhodnocena.
Zvažte následující příklad:
SELECT * FROM city
WHERE Name < 'Ab'
AND Population < 100000
OR District = 'Canary Islands';
Výsledek:
+------+------------------------------+---------------+----------------+--------------+ | 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 | +------+------------------------------+---------------+----------------+--------------+
V tomto dotazu jsem neuvedl žádné závorky, a proto AND
operátor byl vyhodnocen před OR
operátor.
Proto jsme dostali řádky, které splňují buď Name < 'Ab' AND Population < 100000
nebo District = 'Canary Islands'
. Pouhým pohledem na toto můžeme říci, že budou vrácena všechna města z Kanárských ostrovů plus všechna města, která splňují první kritéria.
Je to jako udělat následující:
SELECT * FROM city
WHERE (Name < 'Ab'
AND Population < 100000)
OR District = 'Canary Islands';
To by nám dalo stejný výsledek jako předchozí dotaz bez závorek.
Ale podívejte se, co se stane, když přesuneme závorky do OR
podmínka.
SELECT * FROM city
WHERE Name < 'Ab'
AND (Population < 100000
OR District = 'Canary Islands');
Výsledek:
+------+------------------------------+---------------+----------------+--------------+ | 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 | +------+------------------------------+---------------+----------------+--------------+
Tentokrát jsme dostali pouze ta města, která uspokojila obě Population < 100000 OR District = 'Canary Islands'
a Name < 'Ab'
.
Negace podmínky
Můžete použít NOT
operátor negovat podmínku poskytnutou operátorem menším než. Zde je příklad:
SELECT PetName, DOB
FROM Pets
WHERE NOT DOB < '2019-12-31';
Výsledek:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fluffy | 2020-11-20 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | +-----------+------------+