V SQL je operátor menší nebo roven (<=
) porovná dva výrazy a vrátí TRUE
pokud má levý operand hodnotu nižší nebo rovnou pravému operandu; jinak je výsledek FALSE
.
Můžete jej použít k určení, zda je hodnota menší nebo rovna jiné hodnotě.
Příklad
Zde je příklad k demonstraci.
SELECT * FROM city
WHERE Population <= 455;
Výsledek:
+------+--------------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+--------------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 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í 455 nebo méně obyvatel.
Včetně
Operátor menší nebo rovno zahrnuje zadanou hodnotu do svého vyhodnocení. Viděli jsme to v předchozím příkladu, když zahrnoval město s 455 obyvateli, což byla přesná hodnota, kterou jsme specifikovali.
Pokud bychom nechtěli, aby bylo toto město zahrnuto, museli bychom hodnotu buď snížit:
SELECT * FROM city
WHERE Population <= 454;
Výsledek:
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | | 3333 | Fakaofo | TKL | Fakaofo | 300 | +------+-------------+---------------+-------------+--------------+
Nebo bychom mohli jednoduše použít operátor menší než (<
) místo toho:
SELECT * FROM city
WHERE Population < 455;
Výsledek:
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | | 3333 | Fakaofo | TKL | Fakaofo | 300 | +------+-------------+---------------+-------------+--------------+
Operátor menší než nezahrnuje vámi zadanou hodnotu.
Data
Zde je příklad, který demonstruje použití operátoru menší než nebo rovno k porovnání hodnot data.
SELECT PetName, DOB
FROM Pets
WHERE DOB <= '2020-03-15';
Výsledek:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | | Wag | 2020-03-15 | +-----------+------------+
Řetězce
Můžete také použít <=
operátor pro porovnání hodnot řetězců. Při porovnávání s hodnotou řetězce použijte uvozovky kolem literálu řetězce.
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ší nebo rovna Ab
. V zásadě vrací všechna města, která začínají písmeny nižšími než Ab
nebo přesně Ab
.
Více podmínek
Pokud máte více podmínek, můžete použít více <=
operátory.
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
. Dále vyhodnocuje 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ňovaly 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á splnila 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átor. 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 | +-----------+------------+