En SQL, l'opérateur inférieur à (<
) compare deux expressions et renvoie TRUE
si l'opérande gauche a une valeur inférieure à l'opérande droit; sinon, le résultat est FALSE
.
Exemple
Voici un exemple pour illustrer.
SELECT * FROM city
WHERE Population < 600;
Résultat :
+------+--------------------+---------------+-------------+--------------+ | 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 | +------+--------------------+---------------+-------------+--------------+
Cette requête renvoie toutes les villes dont la population est inférieure à 600.
Exclusif
L'opérateur inférieur à n'inclut pas la valeur spécifiée dans son évaluation.
Par exemple, l'exemple suivant ne renvoie pas Fakaofo, qui compte 300 habitants :
SELECT * FROM city
WHERE Population < 300;
Résultat :
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | +------+-------------+---------------+-------------+--------------+
Pour inclure des villes de 300 habitants, nous aurions besoin d'augmenter la valeur spécifiée :
SELECT * FROM city
WHERE Population < 301;
Résultat :
+------+-------------+---------------+-------------+--------------+ | ID | Name | CountryCode | District | Population | |------+-------------+---------------+-------------+--------------| | 2317 | West Island | CCK | West Island | 167 | | 2912 | Adamstown | PCN | – | 42 | | 3333 | Fakaofo | TKL | Fakaofo | 300 | +------+-------------+---------------+-------------+--------------+
Dates
Voici un exemple pour illustrer l'utilisation de l'opérateur inférieur à pour comparer les valeurs de date.
SELECT PetName, DOB
FROM Pets
WHERE DOB < '2020-01-01';
Résultat :
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | +-----------+------------+
Chaînes
Vous pouvez également utiliser l'opérateur inférieur à pour comparer les valeurs de chaîne. Lors de la comparaison avec une valeur de chaîne, utilisez des guillemets autour de la chaîne.
SELECT * FROM city
WHERE Name < 'Ab';
Résultat :
+------+------------------------------+---------------+---------------------+--------------+ | 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 | +------+------------------------------+---------------+---------------------+--------------+
Cette requête renvoie toutes les villes inférieures à Ab
. Fondamentalement, il renvoie toutes les villes qui commencent par des lettres inférieures à Ab
.
Plusieurs conditions
Si vous avez plusieurs conditions, vous pouvez utiliser plusieurs opérateurs inférieur à.
Comme ceci :
SELECT * FROM city
WHERE Name < 'Ab' AND Population < 100000;
Résultat :
+------+--------+---------------+------------+--------------+ | ID | Name | CountryCode | District | Population | |------+--------+---------------+------------+--------------| | 548 | Šumen | BGR | Varna | 94686 | | 3479 | Šostka | UKR | Sumy | 90000 | +------+--------+---------------+------------+--------------+
Priorité
Vous pouvez également utiliser une combinaison d'opérateurs lors du filtrage des résultats.
Notez que SQL a un ordre de priorité qu'il attribue aux différents types d'opérateurs. Par exemple, il évalue tous les opérateurs conditionnels avant tous les opérateurs logiques, tels que AND
et OR
. Il évalue également tout AND
opérateurs avant tout OR
opérateurs.
Les parenthèses ont une priorité plus élevée que tous les opérateurs, et vous pouvez donc utiliser des parenthèses pour spécifier l'ordre dans lequel chaque condition doit être évaluée.
Prenons l'exemple suivant :
SELECT * FROM city
WHERE Name < 'Ab'
AND Population < 100000
OR District = 'Canary Islands';
Résultat :
+------+------------------------------+---------------+----------------+--------------+ | 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 | +------+------------------------------+---------------+----------------+--------------+
Dans cette requête, je n'ai fourni aucune parenthèse, et donc le AND
l'opérateur a été évalué avant le OR
opérateur.
Par conséquent, nous avons obtenu des lignes qui satisfaisaient soit Name < 'Ab' AND Population < 100000
ou District = 'Canary Islands'
. Rien qu'en regardant cela, nous pouvons dire que toutes les villes des îles Canaries seront renvoyées, ainsi que toutes les villes qui satisfont au premier critère.
Cela revient à faire ce qui suit :
SELECT * FROM city
WHERE (Name < 'Ab'
AND Population < 100000)
OR District = 'Canary Islands';
Cela nous donnerait le même résultat que la requête précédente sans parenthèses.
Mais regardez ce qui se passe lorsque nous déplaçons les parenthèses vers le OR
état.
SELECT * FROM city
WHERE Name < 'Ab'
AND (Population < 100000
OR District = 'Canary Islands');
Résultat :
+------+------------------------------+---------------+----------------+--------------+ | 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 | +------+------------------------------+---------------+----------------+--------------+
Cette fois, nous n'avons obtenu que les villes qui satisfaisaient à la fois Population < 100000 OR District = 'Canary Islands'
et Name < 'Ab'
.
Négation de la condition
Vous pouvez utiliser le NOT
pour annuler la condition fournie par l'opérateur inférieur à. Voici un exemple :
SELECT PetName, DOB
FROM Pets
WHERE NOT DOB < '2019-12-31';
Résultat :
+-----------+------------+ | PetName | DOB | |-----------+------------| | Fluffy | 2020-11-20 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | +-----------+------------+