SQL: Почему между оператором включительно? - PullRequest
0 голосов
/ 27 февраля 2020

Мой первый пост здесь. :)

Мой учитель просит меня: Напишите запрос, чтобы отобразить имена учеников в возрасте от 18 до 20 лет.

Я пишу:

SELECT * FROM students WHERE age BETWEEN 18 AND 20;

Я чувствую, что:

SELECT * FROM students WHERE age = 19; --should be an equivalent statement

Я ожидаю, что в возрасте от 18 до 20 лет будет 19 лет. Но это включает в себя 18 и 20. Это кажется мне безумным. Есть ли причина, по которой BETWEEN будет включать верхнюю и нижнюю границы?

Нормально ли для людей в SQL просить что-то среднее, но ожидать включения значений?

1 Ответ

1 голос
/ 27 февраля 2020

Да, BETWEEN включительно как для границ, определенных в ANSI SQL, так и для всех известных мне баз данных.

Postgres не является исключением :

Предикат BETWEEN упрощает тестирование диапазона:

a BETWEEN x AND y

эквивалентно

a >= x AND a <= y

Скорее всего, ваш учитель понимает это точно так же.

Если вы хотите не включающий предикат, тогда вам нужно четко указать это:

SELECT * FROM students WHERE age > 18 AND age < 20
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...