SQL Server 2005'之间'运算符行为 - 错误还是功能?

Lyn*_*ler 6 sql t-sql sql-server sql-server-2005

根据microsoft文档,'BETWEEN'运算符的行为应该是左侧和右侧的闭合区间,但是,以下代码:

SELECT CASE WHEN (1 BETWEEN 1 AND 2) THEN 'YEAH' ELSE 'NO' END AS [closed in the left],
       CASE WHEN (1 BETWEEN 2 AND 1) THEN 'YEAH' ELSE 'NO' END AS [closed in the right]
Run Code Online (Sandbox Code Playgroud)

另有说明.你能重现吗?你怎么看?

Joe*_*lli 15

使用时必须始终首先指定最小值BETWEEN.您引用的文档表明:

如果test_expression的值大于或等于begin_expression的值且小于或等于end_expression的值,则BETWEEN返回TRUE.

所以你的第二个CASE实际上正在测试:

1 >= 2 AND 1 <= 1
Run Code Online (Sandbox Code Playgroud)

  • +1,我会添加一件事.正确的"在右边关闭"测试看起来像这样:`情况何时(1和2之间为2)那么'''''''''''''''''''''''''''' (2认同)

Sch*_*Cat 5

您链接的文档说:

如果test_expression的值大于或等于begin_and的值且小于或等于end_expression的值,则BETWEEN返回TRUE.

所以你得到的结果是正确的.BETWEEN只是一个简写.