SQL между, MySQL между датами, а не между
Оператор SQL BETWEEN используется вместе с операторами SQL IN, используемыми последовательно. Значения, определенные как часть диапазона МЕЖДУ, являются включающими, т. е. значения, упомянутые в диапазоне, включаются в начальное и конечное значения. Давайте подробно обсудим оператор BETWEEN. Как упоминалось выше, оператор BETWEEN можно использовать вместе с числовым значением, текстовым значением и датой. Ниже мы подробно обсудим все три.
SQL между синтаксисом
SELECT Column(s) FROM table_name WHERE column BETWEEN value1 AND value2;
Используя вышеупомянутый синтаксис, мы можем определить значения как часть оператора BETWEEN. Кроме того, упомянутый выше синтаксис остается тем же для использования с числовым значением, текстовым значением и значением даты.
Оператор SQL BETWEEN для числового значения
Мы поймем вышеупомянутый синтаксис более подробно на некоторых примерах для числового значения. Давайте рассмотрим следующую таблицу Student для примера.
RollNo | StudentName | StudentGender | StudentAge | StudentPercent | AdmissionDate |
---|---|---|---|---|---|
1 | George | M | 14 | 85 | 2018-01-01 |
2 | Monica | F | 12 | 88 | 2018-01-31 |
3 | Jessica | F | 13 | 84 | 2018-01-15 |
4 | Tom | M | 11 | 78 | 2017-12-15 |
Я использую базу данных MySQL, и вот скрипт для создания и вставки примеров записей в таблицу Student.
CREATE TABLE `Student` (
`rollno` int(11) unsigned NOT NULL,
`studentname` varchar(20) DEFAULT NULL,
`studentgender` varchar(5) DEFAULT NULL,
`studentage` int(3) DEFAULT NULL,
`studentpercent` int(3) DEFAULT NULL,
`admissiondate` date DEFAULT NULL,
PRIMARY KEY (`rollno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `Student` (`rollno`, `studentname`, `studentgender`, `studentage`, `studentpercent`, `admissiondate`)
VALUES
(1, 'George', 'M', 14, 85, '2018-01-01'),
(2, 'Monica', 'F', 12, 88, '2018-01-31'),
(3, 'Jessica', 'F', 13, 84, '2018-01-15'),
(4, 'Tom', 'M', 11, 78, '2017-12-15');
Сценарий: Получите процент учащихся в возрасте от 11 до 13 лет.
SELECT StudentPercent FROM Student WHERE StudentAge BETWEEN 11 AND 13;
Выход:
StudentPercent |
---|
88 |
84 |
78 |
Оператор SQL NOT BETWEEN для числового значения
Оператор SQL NOT BETWEEN используется для получения значений как части набора результатов, которые находятся за пределами диапазона, указанного оператором BETWEEN. Сценарий: Получите процент учащихся, возраст которых не находится между 11 и 13 годами.
SELECT StudentPercent FROM Student WHERE StudentAge NOT BETWEEN 11 AND 13;
Выход:
StudentPercent |
---|
85 |
Оператор SQL BETWEEN для текстового значения
Сценарий: Получите RollNo, StudentName и StudentAge, где StudentName находится между Джорджем и Джессикой.
SELECT RollNo, StudentName, StudentAge FROM Student WHERE StudentName BETWEEN 'George' AND 'Jessica';
Выход:
RollNo | StudentName | StudentAge |
---|---|---|
1 | George | 14 |
3 | Jessica | 13 |
Оператор SQL NOT BETWEEN для текстового значения
Сценарий: Получите RollNo, StudentName и StudentAge, где StudentName не находится между Джорджем и Джессикой.
SELECT RollNo, StudentName, StudentAge FROM Student WHERE StudentName NOT BETWEEN 'George' AND 'Jessica';
Выход:
RollNo | StudentName | StudentAge |
---|---|---|
2 | Monica | 12 |
4 | Tom | 11 |
Оператор SQL BETWEEN для значения даты
Сценарий: получите возраст учащихся, поступивших в период с 1 января 2018 года по 31 января 2018 года.
SELECT StudentAge FROM Student WHERE admissiondate BETWEEN str_to_date('2018-01-01', '%Y-%m-%d') AND '2018-01-31';
Выход:
StudentAge |
---|
14 |
12 |
13 |
Оператор SQL NOT BETWEEN для значения даты
Сценарий: получите возраст учащихся, поступивших не в период с 1 января 2018 года по 31 января 2018 года.
SELECT StudentAge FROM Student WHERE admissiondate NOT BETWEEN str_to_date('2018-01-01', '%Y-%m-%d') AND '2018-01-31';
Выход:
StudentAge |
---|
11 |
НЕСКОЛЬКО МЕЖДУ операторами
Мы также можем использовать несколько операторов между операторами. Его синтаксис:
SELECT Column(s) FROM table_name WHERE
column_name BETWEEN value1 AND value2
AND
column_name BETWEEN value3 and value4
...
AND
BETWEEN column_name BETWEEN valueN and valueM;
Используя вышеупомянутый синтаксис, мы можем использовать несколько операторов BETWEEN. Сценарий: Получите имя учащегося в возрасте от 10 до 13 лет и с оценками от 80 до 85 процентов.
SELECT StudentName FROM Student WHERE
StudentAge BETWEEN 10 AND 13
AND
StudentPercent BETWEEN 80 AND 85;