我在这里的第一篇文章。:(
我的老师让我:编写一个查询,显示年龄在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