In SQL, l'operatore minore o uguale a (<=
) confronta due espressioni e restituisce TRUE
se l'operando di sinistra ha un valore inferiore o uguale all'operando di destra; in caso contrario, il risultato è FALSE
.
Puoi usarlo per determinare se un valore è minore o uguale a un altro valore.
Esempio
Ecco un esempio da dimostrare.
SELECT * FROM city
WHERE Population <= 455;
Risultato:
+------+--------------------+---------------+-------------+--------------+ | 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 | +------+--------------------+---------------+-------------+--------------+
Questa query restituisce tutte le città con una popolazione di 455 abitanti o inferiore.
Incluso
L'operatore minore o uguale a include il valore specificato nella sua valutazione. Lo abbiamo visto nell'esempio precedente quando includeva la città con una popolazione di 455 abitanti, che era il valore esatto che avevamo specificato.
Se non volessimo che questa città fosse inclusa, avremmo bisogno di abbassare il valore:
SELECT * FROM city
WHERE Population <= 454;
Risultato:
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | | 3333 | Fakaofo | TKL | Fakaofo | 300 | +------+-------------+---------------+-------------+--------------+
Oppure potremmo semplicemente usare l'operatore less than (<
) invece:
SELECT * FROM city
WHERE Population < 455;
Risultato:
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | | 3333 | Fakaofo | TKL | Fakaofo | 300 | +------+-------------+---------------+-------------+--------------+
L'operatore minore di non include il valore specificato.
Date
Ecco un esempio per dimostrare l'utilizzo dell'operatore minore o uguale a per confrontare i valori della data.
SELECT PetName, DOB
FROM Pets
WHERE DOB <= '2020-03-15';
Risultato:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | | Wag | 2020-03-15 | +-----------+------------+
Stringhe
Puoi anche usare il <=
operatore per confrontare i valori delle stringhe. Quando si confronta con un valore stringa, utilizzare le virgolette attorno alla stringa letterale.
SELECT * FROM city
WHERE Name <= 'Ab';
Risultato:
+------+------------------------------+---------------+---------------------+--------------+ | 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 | +------+------------------------------+---------------+---------------------+--------------+
Questa query restituisce tutte le città minori o uguali a Ab
. Fondamentalmente, restituisce tutte le città che iniziano con lettere inferiori a Ab
o esattamente Ab
.
Condizioni multiple
Se hai più condizioni, puoi utilizzare più <=
operatori.
In questo modo:
SELECT * FROM city
WHERE Name <= 'Ab' AND Population <= 100000;
Risultato:
+------+--------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+--------+---------------+------------+--------------| | 548 | Šumen | BGR | Varna | 94686 | | 3479 | Šostka | UKR | Sumy | 90000 | +------+--------+---------------+------------+--------------+
Precedenza
Puoi anche utilizzare una combinazione di operatori per filtrare i risultati.
Si noti che SQL ha un ordine di precedenza che assegna a diversi tipi di operatore. Ad esempio, valuta qualsiasi operatore condizionale prima di qualsiasi operatore logico, come AND
e OR
. Inoltre, valuta qualsiasi AND
operatori prima di qualsiasi OR
operatori.
Le parentesi hanno una precedenza maggiore rispetto a tutti gli operatori, quindi puoi utilizzare le parentesi per specificare l'ordine in cui deve essere valutata ciascuna condizione.
Considera il seguente esempio:
SELECT * FROM city
WHERE Name <= 'Ab'
AND Population <= 100000
OR District = 'Canary Islands';
Risultato:
+------+------------------------------+---------------+----------------+--------------+ | 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 | +------+------------------------------+---------------+----------------+--------------+
In questa query, non ho fornito parentesi, quindi AND
l'operatore è stato valutato prima di OR
operatore.
Pertanto abbiamo ottenuto righe che soddisfacevano sia Name <= 'Ab' AND Population <= 100000
o District = 'Canary Islands'
. Possiamo dire solo guardando questo che verranno restituite tutte le città delle Isole Canarie, più tutte le città che soddisfano i primi criteri.
È come fare quanto segue:
SELECT * FROM city
WHERE (Name <= 'Ab'
AND Population <= 100000)
OR District = 'Canary Islands';
Questo ci darebbe lo stesso risultato della query precedente senza parentesi.
Ma guarda cosa succede quando spostiamo le parentesi su OR
condizione.
SELECT * FROM city
WHERE Name <= 'Ab'
AND (Population <= 100000
OR District = 'Canary Islands');
Risultato:
+------+------------------------------+---------------+----------------+--------------+ | 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 | +------+------------------------------+---------------+----------------+--------------+
Questa volta abbiamo solo quelle città che soddisfano entrambi Population <= 100000 OR District = 'Canary Islands'
e Name <= 'Ab'
.
Negazione della condizione
Puoi usare il NOT
operatore per negare la condizione fornita da <=
operatore. Ecco un esempio:
SELECT PetName, DOB
FROM Pets
WHERE NOT DOB <= '2019-12-31';
Risultato:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fluffy | 2020-11-20 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | +-----------+------------+