В этом учебном материале вы узнаете, как использовать SQL условие BETWEEN с синтаксисом и примерами.
Описание
SQL условие BETWEEN позволяет легко проверить, находится ли выражение в диапазоне значений (включительно). Его можно использовать в операторе SELECT, INSERT, UPDATE или DELETE.
Синтаксис
Синтаксис для условия BETWEEN в SQL:
Параметры или аргументы
- expression
- Столбец или расчет.
- value1 и value2
- Эти значения создают инклюзивный диапазон, с которым сравнивается expression.
Примечание
Условие SQL BETWEEN будет возвращать записи, где выражение находится в диапазоне значений value1 и value2 (включительно).
Пример - использование условия BETWEEN с числовыми значениями
Давайте рассмотрим пример использования условия BETWEEN для получения значений в числовом диапазоне.
В этом примере у нас есть таблица suppliers со следующими данными:
supplier_id | supplier_name | city | state |
---|---|---|---|
100 | Yandex | Moscow | Moscow |
200 | Lansing | Michigan | |
300 | Oracle | Redwood City | California |
400 | Bing | Redmond | Washington |
500 | Yahoo | Sunnyvale | Washington |
600 | DuckDuckGo | Paoli | Pennsylvania |
700 | Qwant | Paris | Ile de France |
800 | Menlo Park | California | |
900 | Electronic Arts | San Francisco | California |
Выполните следующий оператор SELECT:
1 2 3 |
SELECT * FROM suppliers WHERE supplier_id BETWEEN 300 AND 600; |
Будет выбрано 4 записи. Вот результаты, которые вы должны получить:
supplier_id | supplier_name | city | state |
---|---|---|---|
300 | Oracle | Redwood City | California |
400 | Bing | Redmond | Washington |
500 | Yahoo | Sunnyvale | Washington |
600 | DuckDuckGo | Paoli | Pennsylvania |
В этом примере возвращаются все строки из таблицы suppliers, где supplier_id находится в диапазоне от 300 до 600 (включительно). Это эквивалентно следующему запросу SELECT:
1 2 3 4 |
SELECT * FROM suppliers WHERE supplier_id >= 300 AND supplier_id <= 600; |
Пример - использование условия BETWEEN со значениями даты
Даты могут быть несколько сложными в SQL, и то, как вы используете условие BETWEEN с датами, зависит от базы данных, которую вы используете (т.е. Oracle, SQL Server, MySQL и т.д.). Мы покажем вам пример для каждой из основных технологий баз данных. Итак, начнем.
В этом примере у нас есть таблица orders и следующими данными:
order_id | customer_id | order_date |
---|---|---|
1 | 7000 | 2019/06/18 |
2 | 5000 | 2019/06/18 |
3 | 8000 | 2019/06/19 |
4 | 4000 | 2019/06/20 |
5 | NULL | 2019/07/01 |
Введите один из следующих операторов SQL, в зависимости от базы данных, которую вы используете.
Для SQL Server, PostgreSQL и SQLite:
1 2 3 |
SELECT * FROM orders WHERE order_date BETWEEN '2019/06/19' AND '2019/07/01'; |
Для Oracle (используйте функцию TO_DATE):
1 2 3 4 |
SELECT * FROM orders WHERE order_date BETWEEN TO_DATE ('19.06.2019', 'dd.mm.yyyy') AND TO_DATE ('01.07.2019', 'dd.mm.yyyy'); |
Для MySQL и MariaDB (используйте функцию CAST):
1 2 3 |
SELECT * FROM orders WHERE order_date BETWEEN CAST('2019/06/19' AS DATE) AND CAST('2019/07/01' AS DATE); |
Будет выбрано 3 записи. Вот результаты, которые вы получите:
order_id | customer_id | order_date |
---|---|---|
3 | 8000 | 2019/06/19 |
4 | 4000 | 2019/06/20 |
5 | NULL | 2019/07/01 |
В этом примере будут возвращены все записи из таблицы orders, где значение order_date находится между 19 июня 2019 г. и 1 июля 2019 г. (включительно).
Пример - использование оператора NOT с условием BETWEEN
Условие BETWEEN может использоваться с оператором NOT для создания условия NOT BETWEEN. Давайте рассмотрим пример, который показывает, как использовать условие NOT BETWEEN в запросе.
В этом примере у нас есть таблица customer, содержащая следующие данные:
customer_id | first_name | last_name | favorite_website |
---|---|---|---|
4000 | Justin | Bieber | google.com |
5000 | Selena | Gomez | bing.com |
6000 | Mila | Kunis | yahoo.com |
7000 | Tom | Cruise | oracle.com |
8000 | Johnny | Depp | NULL |
9000 | Russell | Crowe | google.com |
Введите следующий SQL оператор:
1 2 3 |
SELECT * FROM customers WHERE customer_id NOT BETWEEN 5000 AND 8000; |
Будет выбрано 2 записи. Вот результаты, которые вы должны получить:
customer_id | first_name | last_name | favorite_website |
---|---|---|---|
4000 | Justin | Bieber | google.com |
9000 | Russell | Crowe | google.com |
Это запрос вернет все строки, где customer_id НЕ находится в диапазоне между 5000 и 8000 включительно. Это было бы эквивалентно следующему запросу SELECT:
1 2 3 4 |
SELECT * FROM customers WHERE customer_id < 5000 OR customer_id > 8000; |