В SQL операторът по-малко или равен на (<=
) сравнява два израза и връща TRUE
ако левият операнд има стойност, по-ниска или равна на десния операнд; в противен случай резултатът е FALSE
.
Можете да го използвате, за да определите дали дадена стойност е по-малка или равна на друга стойност.
Пример
Ето пример за демонстрация.
SELECT * FROM city
WHERE Population <= 455;
Резултат:
+------+--------------------+---------------+-------------+--------------+ | 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 | +------+--------------------+---------------+-------------+--------------+
Тази заявка връща всички градове с население от 455 или по-малко.
Включително
Операторът по-малко или равен на включва определената стойност в своята оценка. Видяхме това в предишния пример, когато включваше града с население от 455, което беше точната стойност, която посочихме.
Ако не искаме този град да бъде включен, ще трябва или да намалим стойността:
SELECT * FROM city
WHERE Population <= 454;
Резултат:
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | | 3333 | Fakaofo | TKL | Fakaofo | 300 | +------+-------------+---------------+-------------+--------------+
Или можем просто да използваме оператора less than (<
) вместо това:
SELECT * FROM city
WHERE Population < 455;
Резултат:
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | | 3333 | Fakaofo | TKL | Fakaofo | 300 | +------+-------------+---------------+-------------+--------------+
Операторът по-малко от не включва стойността, която сте посочили.
Дати
Ето пример за демонстриране на използването на оператора по-малко или равно на за сравняване на стойностите за дата.
SELECT PetName, DOB
FROM Pets
WHERE DOB <= '2020-03-15';
Резултат:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | | Wag | 2020-03-15 | +-----------+------------+
Стрингове
Можете също да използвате <=
оператор за сравнение стойности на низове. Когато сравнявате със стойност на низ, използвайте кавички около низовия литерал.
SELECT * FROM city
WHERE Name <= 'Ab';
Резултат:
+------+------------------------------+---------------+---------------------+--------------+ | 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 | +------+------------------------------+---------------+---------------------+--------------+
Тази заявка връща всички градове, които са по-малки или равни на Ab
. По принцип той връща всички градове, които започват с букви, по-ниски от Ab
или точно Ab
.
Множество условия
Ако имате няколко условия, можете да използвате няколко <=
оператори.
Като това:
SELECT * FROM city
WHERE Name <= 'Ab' AND Population <= 100000;
Резултат:
+------+--------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+--------+---------------+------------+--------------| | 548 | Šumen | BGR | Varna | 94686 | | 3479 | Šostka | UKR | Sumy | 90000 | +------+--------+---------------+------------+--------------+
Приоритет
Можете също да използвате комбинация от оператори, когато филтрирате резултатите.
Имайте предвид, че SQL има ред на приоритет, който присвоява на различни типове оператори. Например, той оценява всички условни оператори преди логически оператори, като AND
и OR
. Освен това, той оценява всяко AND
оператори преди всяко OR
оператори.
Скобите имат по-висок приоритет от всички оператори и затова можете да използвате скоби, за да посочите реда, в който трябва да се оценява всяко условие.
Помислете за следния пример:
SELECT * FROM city
WHERE Name <= 'Ab'
AND Population <= 100000
OR District = 'Canary Islands';
Резултат:
+------+------------------------------+---------------+----------------+--------------+ | 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 | +------+------------------------------+---------------+----------------+--------------+
В тази заявка не предоставих никакви скоби и така AND
операторът е оценен преди OR
оператор.
Следователно получихме редове, които отговарят на Name <= 'Ab' AND Population <= 100000
или District = 'Canary Islands'
. Само като погледнем това, можем да кажем, че всички градове от Канарските острови ще бъдат върнати, плюс всички градове, които отговарят на първите критерии.
Това е като да направите следното:
SELECT * FROM city
WHERE (Name <= 'Ab'
AND Population <= 100000)
OR District = 'Canary Islands';
Това ще ни даде същия резултат като предишната заявка без скоби.
Но вижте какво се случва, когато преместим скобите в OR
състояние.
SELECT * FROM city
WHERE Name <= 'Ab'
AND (Population <= 100000
OR District = 'Canary Islands');
Резултат:
+------+------------------------------+---------------+----------------+--------------+ | 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 | +------+------------------------------+---------------+----------------+--------------+
Този път получихме само онези градове, които удовлетвориха и двете Population <= 100000 OR District = 'Canary Islands'
и Name <= 'Ab'
.
Отрицание на условието
Можете да използвате NOT
оператор за отхвърляне на условието, предоставено от <=
оператор. Ето един пример:
SELECT PetName, DOB
FROM Pets
WHERE NOT DOB <= '2019-12-31';
Резултат:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fluffy | 2020-11-20 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | +-----------+------------+