-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBETWEEN.txt
103 lines (77 loc) · 5.34 KB
/
BETWEEN.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
****** SQL условие BETWEEN ******
SQL условие BETWEEN позволяет легко проверить, находится ли выражение в диапазоне
значений (включительно). Его можно использовать в операторе SELECT, INSERT, UPDATE
или DELETE.
Синтаксис для условия BETWEEN в SQL:
***************************************************************************************
expression BETWEEN value1 AND value2;
***************************************************************************************
Параметры:
- expression - cтолбец или расчет.
- value1 и value2 - эти значения создают инклюзивный диапазон, с которым сравнивается expression.
!!! ВНИМАНИЕ !!!
Условие SQL BETWEEN будет возвращать записи, где выражение находится в диапазоне значений
value1 и value2 (включительно).
!!! ВНИМАНИЕ !!!
****** Использование условия BETWEEN с числовыми значениями ******
У нас есть таблица suppliers со следующими полями: supplier_id, supplier_name,
city, state.
Формируем MySQL запрос:
***************************************************************************************
SELECT *
FROM suppliers
WHERE supplier_id BETWEEN 300 AND 600;
***************************************************************************************
В этом примере возвращаются все строки из таблицы suppliers, где supplier_id находится в
диапазоне от 300 до 600 (включительно).
Такой запрос эквивалентен запросу SELECT в PgSQL:
***************************************************************************************
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.
SQL запрос, в зависимости от базы данных, которую мы используем:
****************************** PgSQL **************************************************
SELECT *
FROM orders
WHERE order_date BETWEEN '2019/06/19' AND '2019/07/01';
****************************** PgSQL **************************************************
Для Oracle (используйте функцию TO_DATE):
****************************** Transact-SQL *******************************************
SELECT *
FROM orders
WHERE order_date BETWEEN TO_DATE ('19.06.2019', 'dd.mm.yyyy')
AND TO_DATE ('01.07.2019', 'dd.mm.yyyy');
****************************** Transact-SQL *******************************************
Для MySQL и MariaDB (используйте функцию CAST):
****************************** MySQL и MariaDB ****************************************
SELECT *
FROM orders
WHERE order_date BETWEEN CAST('2019/06/19' AS DATE) AND CAST('2019/07/01' AS DATE);
****************************** MySQL и MariaDB ****************************************
В этом примере будут возвращены все записи из таблицы orders, где значение order_date
находится между 19 июня 2019 г. и 1 июля 2019 г. (включительно).
****** Использование оператора NOT с условием BETWEEN ******
Условие BETWEEN может использоваться с оператором NOT для создания условия NOT BETWEEN.
Пример, который показывает, как использовать условие NOT BETWEEN в запросе. У нас есть
таблица customer, содержащая следующие поля: customer_id, first_name,
last_name, favorite_website.
***************************************************************************************
SELECT *
FROM customers
WHERE customer_id NOT BETWEEN 5000 AND 8000;
***************************************************************************************
Это запрос вернет все строки, где customer_id НЕ находится в диапазоне между 5000 и 8000
включительно. Такой запрос эквивалентен следующему запросу SELECT:
***************************************************************************************
SELECT *
FROM customers
WHERE customer_id < 5000
OR customer_id > 8000;
***************************************************************************************