Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:为什么运算符之间包含?_Sql_Postgresql - Fatal编程技术网

SQL:为什么运算符之间包含?

SQL:为什么运算符之间包含?,sql,postgresql,Sql,Postgresql,我在这里的第一篇文章。:) 我的老师让我: 写一个查询来显示那些年龄在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。我觉得这很疯狂。是否有理由认为之间的会包括上限和下限 SQL

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

我的老师让我: 写一个查询来显示那些年龄在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。我觉得这很疯狂。是否有理由认为之间的
会包括上限和下限


SQL中的人要求中间值但希望包含值是正常的吗?

是的,
中间值包括ANSI SQL中定义的两个边界,以及我所知道的所有数据库

:

BETWEEN
谓词简化了范围测试:

x和y之间的a

相当于

a>=x和18岁且年龄<20岁

它是包容性的,因为标准上是这么说的。反过来,标准也不需要有可靠的解释:他们的想法是定义行为。我希望中间层是包容的,并将其解释为包容的,而实现中间层也是包容的。如果有人让我列出18到20岁之间的所有人,我会包括18到20岁的人。你确定你的老师不是故意问这样的问题吗?@Mikebaton有时在英语中是包容性的,但在我看来更多的时候不是。相关讨论好吧,同意,可以两者兼而有之。在英式英语中,它可能更具包容性,因为美式英语的包容性范围是“通过”,所以不使用“通过”可能意味着你不是指“通过”?因此,如果一个说美式英语的人读到老师的问题时,可能会觉得这个问题更加含糊不清?“你的老师也这么理解。”---tbh一项技术任务应该解释得更准确些,不要留下误解的余地。谢谢,这看起来有点奇怪。现在,我知道我当然会一直考虑在Be=之间,但这并不是我所期望的。我同意,我真的不知道当我交作业时会发生什么。谢谢你的帮助!也许你的老师鬼鬼祟祟的,很清楚中间人对博士后意味着什么,但他还是这么说,希望你能做些奇怪的事情。比如在文档中查找它,在那里它被完整地解释了。只需谷歌“postgres between”。是的,我马上就注意到了,但老师的答案在SQL意义上使用了between,所以我认为他搞错了。不管怎样,这都是一门在线课程,我学到了一些重要的东西。
SELECT * FROM students WHERE age > 18 AND age < 20