Opérateurs BETWEENSQL


L'opérateur BETWEEN sélectionne des valeurs dans une plage de données comprise entre deux valeurs. Ces valeurs peuvent être numériques, du texte ou des dates.

Syntaxe de BETWEEN en SQL

SELECT column1, column2, ...
FROM table_name
WHERE column BETWEEN value1 AND value2;

Description des paramètres :

  • column1, column2, ... : Les noms de champs à sélectionner peuvent être multiples. Si aucun nom de champ n'est spécifié, tous les champs seront sélectionnés.
  • table_name: Le nom de la table à interroger.
  • column: Le nom du champ à interroger.
  • value1: La valeur de début de l'intervalle.
  • value2: La valeur de fin de l'intervalle.


Base de données de démonstration

Dans ce tutoriel, nous utiliserons la base de données d'exemple EXAMPLE.

Voici les données sélectionnées dans la table "Websites" :

mysql> SELECT * FROM Websites;
+----+---------------+---------------------------+-------+---------+
| id | name          | url                       | alexa | country |
+----+---------------+---------------------------+-------+---------+
|  1 | Google        | https://www.google.cm/    |     1 | USA     |
|  2 | 淘宝          | https://www.taobao.com/   |    13 | CN      |
|  3 | Example       | http://www.example.com/    |  5000 | USA     |
|  4 | 微博           | http://weibo.com/         |    20 | CN      |
|  5 | Facebook      | https://www.facebook.com/ |     3 | USA     |
|  7 | stackoverflow | http://stackoverflow.com/ |     0 | IND     |
+----+---------------+---------------------------+-------+---------+


Exemple d'opérateur BETWEEN

L'instruction SQL suivante sélectionne tous les sites web dont l'alexa est compris entre 1 et 20 :

Exemple

SELECT * FROM Websites
WHERE alexa BETWEEN 1 AND 20;

Résultat de sortie de l'exécution :



Exemple d'opérateur NOT BETWEEN

Pour afficher les sites web qui ne se trouvent pas dans l'intervalle de l'exemple ci-dessus, utilisez NOT BETWEEN :

Exemple

SELECT * FROM Websites
WHERE alexa NOT BETWEEN 1 AND 20;

Résultat de sortie de l'exécution :



Exemple d'opérateur BETWEEN avec IN

L'instruction SQL suivante sélectionne tous les sites Web dont alexa est comprise entre 1 et 20, mais dont le pays n'est ni USA ni IND :

Exemple

SELECT * FROM Websites
WHERE (alexa BETWEEN 1 AND 20)
AND country NOT IN ('USA', 'IND');

Résultat de sortie de l'exécution :



Exemple d'opérateur BETWEEN avec des valeurs textuelles

L'instruction SQL suivante sélectionne tous les sites Web dont le nom commence par une lettre comprise entre 'A' et 'H' :

Exemple

SELECT * FROM Websites
WHERE name BETWEEN 'A' AND 'H';

Résultat de sortie de l'exécution :



Exemple d'opérateur NOT BETWEEN avec des valeurs textuelles

L'instruction SQL suivante sélectionne tous les sites Web dont le nom ne commence pas par une lettre comprise entre 'A' et 'H' :

Exemple

SELECT * FROM Websites
WHERE name NOT BETWEEN 'A' AND 'H';

Résultat de sortie de l'exécution :



Table d'exemple

Voici les données de la table de journal d'accès au site web "access_log", où :

  • aid:est l'id auto-incrémenté.
  • site_id: est l'id du site web correspondant à la table websites.
  • count: le nombre de visites.
  • date:est la date de visite.
mysql> SELECT * FROM access_log;
+-----+---------+-------+------------+
| aid | site_id | count | date       |
+-----+---------+-------+------------+
|   1 |       1 |    45 | 2016-05-10 |
|   2 |       3 |   100 | 2016-05-13 |
|   3 |       1 |   230 | 2016-05-14 |
|   4 |       2 |    10 | 2016-05-14 |
|   5 |       5 |   205 | 2016-05-14 |
|   6 |       4 |    13 | 2016-05-15 |
|   7 |       3 |   220 | 2016-05-15 |
|   8 |       5 |   545 | 2016-05-16 |
|   9 |       3 |   201 | 2016-05-17 |
+-----+---------+-------+------------+
9 rows in set (0.00 sec)

Le fichier SQL de la table access_log utilisé dans ce tutoriel :access_log.sql。



Exemple de l'opérateur BETWEEN avec des valeurs de date

L'instruction SQL suivante sélectionne tous les enregistrements de visite dont la date est comprise entre '2016-05-10' et '2016-05-14' :

Exemple

SELECT * FROM access_log
WHERE date BETWEEN '2016-05-10' AND '2016-05-14';

Résultat de sortie de l'exécution :


lamp

Veuillez noter que l'opérateur BETWEEN peut produire des résultats différents dans différentes bases de données !
Dans certaines bases de données, BETWEEN sélectionne les champs qui se trouvent entre deux valeurs, mais n'inclut pas les deux valeurs de test.
Dans certaines bases de données, BETWEEN sélectionne les champs compris entre deux valeurs et inclut les deux valeurs de test.
Dans certaines bases de données, BETWEEN sélectionne les champs compris entre deux valeurs et inclut la première valeur de test mais pas la dernière valeur de test.

Par conséquent, veuillez vérifier comment votre base de données gère l'opérateur BETWEEN !

Autres extensions