postgreSQL:为什么包含BETWEEN运算符



我在这里的第一篇文章。:(

我的老师让我:编写一个查询,显示年龄在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中的人要求介于之间的值,但期望包含值,这正常吗?

是的,BETWEEN包含ANSI SQL中定义的两个边界,以及我所知道的所有数据库中的边界。

Postgres也不例外:

BETWEEN谓词简化了范围测试:

a BETWEEN x AND y

相当于

a >= x AND a <= y

很可能你的老师也理解这一点。

如果你想要一个非包容性谓词,那么你需要明确它:

SELECT * FROM students WHERE age > 18 AND age < 20

最新更新