English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Opérateurs IN & BETWEEN SQL

Dans ce tutoriel, vous apprendrez comment utiliser les opérateurs IN et BETWEEN avec la clause WHERE.

Utilisation des conditions de plage et d'adhésion

Dans le chapitre précédent, nous avons appris comment utiliser les opérateurs AND et OR pour combiner plusieurs conditions. Cependant, parfois cela n'est pas suffisant, par exemple, si vous devez vérifier une valeur située dans une plage ou un ensemble de valeurs.

Ici, l'opérateur IN et BETWEEN apparaissent, ce qui vous permet de définir une plage exclusive ou un ensemble de valeurs, plutôt que de combiner des conditions individuelles.

Opérateur IN

L'opérateur IN est un opérateur logique, utilisé pour vérifier si une valeur spécifique existe dans un ensemble de valeurs. Sa syntaxe de base peut être donnée de la manière suivante :

SELECT column_list FROM table_name
WHERE column_name IN (valeur)1, valeur1,...);

Ici,column_listEst la colonne de la table de base de données dont vous souhaitez obtenir la valeur/du champNompar exemplename,age,countryetc. Bon, regardons quelques exemples.

Considérons que nous avons dans notre base de donnéesemployeesLa table, qui a les enregistrements suivants :

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Ethan Hunt | 2001-05-01 |   5000 |       4 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      5 | Martin Blank | 2008-06-24 |   5600 |
+--------+--------------+------------+--------+---------+

La requête SQL suivante ne retournera quedept_idPour1OU3des employés.

Exemple * FROM employees
WHERE dept_id IN (1, 3);

Après l'exécution de la requête, vous obtiendrez le résultat suivant :

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
+--------+--------------+------------+--------+---------+

De même, vous pouvez utiliser l'opérateur NOT IN, qui est complètement opposé à l'opérateur IN. La requête SQL suivante retournera ceux qui ne sont pasdept_idN'est pas1OU3des employés.

Exemple * FROM employees
WHERE dept_id NOT IN (1, 3);

Après l'exécution de la requête, cette fois, vous obtiendrez le résultat suivant :

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Ethan Hunt | 2001-05-01 |   5000 |       4 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
+--------+--------------+------------+--------+---------+

Opérateur BETWEEN

Si la valeur d'une colonne tombe dans une plage spécifique, vous souhaitez parfois sélectionner une ligne. Ce type de condition est courant lors de la manipulation des données numériques.

Pour exécuter une requête basée sur cette condition, vous pouvez utiliser l'opérateur BETWEEN. C'est un opérateur logique qui vous permet de spécifier la plage à tester, comme suit :

SELECT column1_name, column2_name, columnN_name FROM table_name WHERE column_name BETWEEN min_value AND max_value;

Commençons parEmployés (employees)Créer et exécuter une requête avec des conditions de plage sur la table.

Définir une plage de valeurs

La requête SQL suivante ne retournera queemployeesLes salaires dans la table7000 à9000 parmi les employés.

Exemple * FROM employees WHERE salary BETWEEN 7000 ET 9000;

Après l'exécution, vous obtiendrez le résultat suivant :

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
+--------+--------------+------------+--------+---------+

Définir une plage de dates

Lorsque vous utilisez l'opérateur BETWEEN avec des valeurs de date ou de temps, utilisez la fonction CAST() pour convertir explicitement ces valeurs en type de données souhaité pour obtenir les meilleurs résultats. Par exemple, si vous comparez avec DATE, utilisez des chaînes de caractères comme “ 2016-12-31” et autres chaînes de caractères, convertissez-les en DATE comme suit :

La requête SQL suivante sélectionne2006année1mois1jour (c'est-à-dire “ 2006-01-01”) et2016année12mois31jour (c'est-à-dire “ 2016-12-31) entre les employés embauchés :

Exemple * FROM employees WHERE hire_date
BETWEEN CAST('2006-01-01AS DATE) ET CAST('2016-12-31AS DATE);

Après l'exécution de la requête, vous obtiendrez le résultat suivant :

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      5 | Martin Blank | 2008-06-24 |   5600 |
+--------+--------------+------------+--------+---------+

00 |    NULL |

Définir une plage de chaînes

Exemple * FROM employees
WHERE emp_name BETWEEN 'O' AND 'Z';

Après l'exécution, vous obtiendrez le résultat suivant :

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
+--------+--------------+------------+--------+---------+