In SQL, l'operatore maggiore o uguale a (>=
) confronta due espressioni e restituisce TRUE
se l'operando di sinistra ha un valore maggiore o uguale all'operando di destra; in caso contrario, restituisce FALSE
.
Esempio
Ecco un esempio da dimostrare.
SELECT * FROM city
WHERE Population >= 9269265
ORDER BY Population ASC;
Risultato:
+------+-----------------+---------------+--------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-----------------+---------------+--------------+--------------| | 2822 | Karachi | PAK | Sindh | 9269265 | | 939 | Jakarta | IDN | Jakarta Raya | 9604900 | | 1890 | Shanghai | CHN | Shanghai | 9696300 | | 206 | São Paulo | BRA | São Paulo | 9968485 | | 2331 | Seoul | KOR | Seoul | 9981619 | | 1024 | Mumbai (Bombay) | IND | Maharashtra | 10500000 | +------+-----------------+---------------+--------------+--------------+
Questa query restituisce tutte le città con una popolazione maggiore o uguale a 9269265.
Incluso
L'operatore maggiore o uguale a include il valore specificato nella sua valutazione.
Ad esempio, la query precedente includeva Karachi, che, secondo questo database, ha una popolazione di esattamente 9269265.
Se volessimo escludere le città con quella popolazione, dovremmo aumentare il valore specificato:
SELECT * FROM city
WHERE Population >= 9269266
ORDER BY Population ASC;
Risultato:
+------+-----------------+---------------+--------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-----------------+---------------+--------------+--------------| | 939 | Jakarta | IDN | Jakarta Raya | 9604900 | | 1890 | Shanghai | CHN | Shanghai | 9696300 | | 206 | São Paulo | BRA | São Paulo | 9968485 | | 2331 | Seoul | KOR | Seoul | 9981619 | | 1024 | Mumbai (Bombay) | IND | Maharashtra | 10500000 | +------+-----------------+---------------+--------------+--------------+
Oppure potremmo semplicemente usare il maggiore di (>
) operatore invece:
SELECT * FROM city
WHERE Population > 9269265
ORDER BY Population ASC;
Risultato:
+------+-----------------+---------------+--------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-----------------+---------------+--------------+--------------| | 939 | Jakarta | IDN | Jakarta Raya | 9604900 | | 1890 | Shanghai | CHN | Shanghai | 9696300 | | 206 | São Paulo | BRA | São Paulo | 9968485 | | 2331 | Seoul | KOR | Seoul | 9981619 | | 1024 | Mumbai (Bombay) | IND | Maharashtra | 10500000 | +------+-----------------+---------------+--------------+--------------+
Date
Ecco un esempio per dimostrare l'utilizzo dell'operatore maggiore o uguale a per confrontare i valori della data.
SELECT PetName, DOB
FROM Pets
WHERE DOB >= '2020-03-15';
Risultato:
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fluffy | 2020-11-20 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | +-----------+------------+
Stringhe
È inoltre possibile utilizzare l'operatore maggiore o uguale a per confrontare i valori di stringa. Quando si confronta con un valore stringa, utilizzare le virgolette attorno alla stringa.
SELECT * FROM city
WHERE Name >= 'Zukovski'
ORDER BY Name;
Risultato:
+------+----------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+----------+---------------+------------+--------------| | 3756 | Zukovski | RUS | Moskova | 96500 | | 2669 | Zumpango | MEX | México | 99781 | | 2025 | Zunyi | CHN | Guizhou | 261862 | | 3245 | Zürich | CHE | Zürich | 336800 | | 3145 | Zwickau | DEU | Saksi | 104146 | | 28 | Zwolle | NLD | Overijssel | 105819 | | 3446 | Zytomyr | UKR | Zytomyr | 297000 | +------+----------+---------------+------------+--------------+
Condizioni multiple
Se hai più condizioni, puoi utilizzare più >=
operatori.
In questo modo:
SELECT * FROM city
WHERE Name >= 'Zukovski' AND Population >= 200000;
Risultato:
+------+---------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+---------+---------------+------------+--------------| | 2025 | Zunyi | CHN | Guizhou | 261862 | | 3245 | Zürich | CHE | Zürich | 336800 | | 3446 | Zytomyr | UKR | Zytomyr | 297000 | +------+---------+---------------+------------+--------------+
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 >= 'Zukovski'
AND Population >= 100000
OR District = 'Overijssel';
Risultato:
+------+----------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+----------+---------------+------------+--------------| | 15 | Enschede | NLD | Overijssel | 149544 | | 28 | Zwolle | NLD | Overijssel | 105819 | | 2025 | Zunyi | CHN | Guizhou | 261862 | | 3145 | Zwickau | DEU | Saksi | 104146 | | 3245 | Zürich | CHE | Zürich | 336800 | | 3446 | Zytomyr | UKR | Zytomyr | 297000 | +------+----------+---------------+------------+--------------+
In questa query, non ho fornito parentesi, quindi AND
l'operatore è stato valutato prima di OR
operatore.
Pertanto abbiamo ottenuto righe che soddisfacevano o Name >= 'Zukovski' AND Population >= 100000
o District = 'Overijssel'
. Possiamo dire solo guardando questo che verranno restituite tutte le città del distretto di Overijssel, più tutte le città che soddisfano i primi criteri.
È come fare quanto segue:
SELECT * FROM city
WHERE (Name >= 'Zukovski'
AND Population >= 100000)
OR District = 'Overijssel';
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 >= 'Zukovski'
AND (Population >= 100000
OR District = 'Overijssel');
Risultato:
+------+---------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+---------+---------------+------------+--------------| | 28 | Zwolle | NLD | Overijssel | 105819 | | 2025 | Zunyi | CHN | Guizhou | 261862 | | 3145 | Zwickau | DEU | Saksi | 104146 | | 3245 | Zürich | CHE | Zürich | 336800 | | 3446 | Zytomyr | UKR | Zytomyr | 297000 | +------+---------+---------------+------------+--------------+
Questa volta abbiamo solo quelle città che soddisfano entrambi Population >= 100000 OR District = 'Overijssel'
e Name >= 'Overijssel'
.
Ciò ha comportato la restituzione di una sola città dell'Overijssel, rispetto alle due della query precedente.
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 | |-----------+------------| | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | +-----------+------------+