Изучаем sql



Pdf көрінісі
бет70/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   66   67   68   69   70   71   72   73   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

Оператор between
Если имеются верхняя и нижняя границы диапазона, вместо двух раз
ных условий можно использовать одно, использующее оператор 
be
tween
(между):
mysql> SELECT emp_id, fname, lname, start_date
> FROM employee
> WHERE start_date BETWEEN '20010101' AND '20030101';
+++++
| emp_id | fname | lname | start_date |
+++++
| 1 | Michael | Smith | 20010622 |


Типы условий
79
| 2 | Susan | Barker | 20020912 |
| 4 | Susan | Hawthorne | 20020424 |
| 8 | Sarah | Parker | 20021202 |
| 9 | Jane | Grossman | 20020503 |
| 10 | Paula | Roberts | 20020727 |
| 14 | Cindy | Mason | 20020809 |
| 16 | Theresa | Markham | 20010315 |
| 17 | Beth | Fowler | 20020629 |
| 18 | Rick | Tulman | 20021212 |
+++++
10 rows in set (0.05 sec)
При работе с оператором 
between
необходимо помнить пару правил.
Первой (после ключевого слова 
between
) всегда должна задаваться ниж
няя граница диапазона, а потом (после 
and
) верхняя граница. Вот что
происходит, если задать первой верхнюю границу:
mysql> SELECT emp_id, fname, lname, start_date
> FROM employee
> WHERE start_date BETWEEN '20030101' AND '20010101';
Empty set (0.00 sec)
Как видите, не возвращено никаких данных. Это объясняется тем, что
фактически из одного заданного условия сервер генерирует два, ис
пользуя операторы 
<=
и 
>=
:
mysql> 
SELECT emp_id, fname, lname, start_date

FROM employee

WHERE start_date >= '20030101'
>
AND start_date <= '20010101';
Empty set (0.00 sec)
Поскольку такая дата – одновременно позднее 1 января 2003 года и
раньше 1 января 2001 года – не существует, по запросу возвращается
пустой набор. Далее следует отметить второй подводный камень при
использовании оператора 
between
: необходимо помнить, что верхняя
и нижняя границы 
включаются 
в диапазон. В данном случае я хотел,
чтобы нижней границей была дата 
20010101
, а верхней – 
20021231
,
а не 
20030101
. Даже несмотря на то, что, скорее всего, никто из со
трудников банка не начал работать в первый же день Нового 2003 го
да, лучше задавать именно то, что требуется.
Как и для дат, можно создавать условия, определяющие диапазон для
чисел. Числовые диапазоны довольно просты для понимания, как вид
но из следующего примера:


Достарыңызбен бөлісу:
1   ...   66   67   68   69   70   71   72   73   ...   261




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет