In SQL, l'operatore minore di (<
) confronta due espressioni e restituisce TRUE
se l'operando di sinistra ha un valore inferiore all'operando di destra; in caso contrario, il risultato è FALSE
.
Esempio
Ecco un esempio da dimostrare.
SELECT * FROM city
WHERE Population < 600;
Risultato:
+------+--------------------+---------------+-------------+--------------+ | 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 | +------+--------------------+---------------+-------------+--------------+
Questa query restituisce tutte le città con una popolazione inferiore a 600 abitanti.
Esclusivo
L'operatore minore di non include il valore specificato nella sua valutazione.
Ad esempio, l'esempio seguente non restituisce Fakaofo, che ha una popolazione di 300 abitanti:
SELECT * FROM city
WHERE Population < 300;
Risultato:
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | +------+-------------+---------------+-------------+--------------+
Per includere le città con una popolazione di 300 abitanti, dovremmo aumentare il nostro valore specificato:
SELECT * FROM city
WHERE Population < 301;
Risultato:
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | | 3333 | Fakaofo | TKL | Fakaofo | 300 | +------+-------------+---------------+-------------+--------------+
Date
Ecco un esempio per dimostrare l'utilizzo dell'operatore minore di per confrontare i valori della data.
SELECT PetName, DOB
FROM Pets
WHERE DOB < '2020-01-01';
Risultato:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | +-----------+------------+
Stringhe
Puoi anche utilizzare l'operatore less than per confrontare i valori delle stringhe. Quando si confronta con un valore stringa, utilizzare le virgolette attorno alla stringa.
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à inferiori a Ab
. Fondamentalmente, restituisce tutte le città che iniziano con lettere inferiori a Ab
.
Condizioni multiple
Se hai più condizioni, puoi utilizzare più operatori meno di.
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
. Valuta anche 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 dall'operatore minore di. 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 | +-----------+------------+