gpt4 book ai didi

sql - SQL中BETWEEN的正确方法

转载 作者:行者123 更新时间:2023-12-02 18:21:56 26 4
gpt4 key购买 nike

使用with的正确方法是什么,因为treehouse和我的老师对这个问题有不同的答案。

选择 1999 年至 2004 年的所有电影。

树屋答案:

SELECT * FROM movies WHERE year BETWEEN 1999 AND 2004;

老师解答:

SELECT * FROM movies WHERE year >= 1999 AND year <= 2004;

哪种方法是正确的?

最佳答案

两者在技术上都是正确的。但是,有理由避免按照老师的建议使用 Between 。最简单的是,在英语中,这个词是有歧义的,可以包含终点,也可以不包含终点。事实上,如果你说直线上的一个点位于另外两个点之间,那么一般的意思是该点与任一端点都不重合。

对于整数来说这是一个小问题。对于其他数据类型来说,它变得更加重要。一个特殊的问题是日期时间。如果数据库中有日期时间字段,则以下内容不会按您期望的方式工作:

where datetimefield between '2013-01-01' and '2013-01-02'

这将返回 2013 年 1 月 1 日以来的所有日期时间值。另外,它将返回两个日期之间正好是午夜的日期时间值。自 2013 年 1 月 2 日起,它将不会返回任何其他值。

我很高兴你的老师认识到之间的缺点。我希望他/她也能解释为什么显式比较方法更好。

编辑:

顺便说一下,字符串也会发生类似的情况。所以:

where charfield between 'a' and 'b'

将返回所有以“a”开头并且恰好以“b”开头的值。但不是“ba”或“b1”。一种编写方法是:

where charfield >= 'a' and charfield < 'c'

重点是。 Between 是一个完全有效的 SQL 结构。它对所有数据类型都“正确”工作。然而,对于大多数人来说,什么是正确的 SQL 可能并不直观。显式比较更接近于避免这个问题。

关于sql - SQL中BETWEEN的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20721466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com