根据microsoft documentation,'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]
另有说明。你能重现吗?你觉得怎么样?
答案 0 :(得分:15)
使用BETWEEN
时,必须始终先指定最小值。您引用的文档表明:
如果test_expression的值大于,则BETWEEN返回TRUE 或者等于begin_expression的值并且小于或等于 end_expression的值。
所以你的第二个CASE实际上正在测试:
1 >= 2 AND 1 <= 1
答案 1 :(得分:5)
您链接的文档说:
如果test_expression的值更大,则BETWEEN返回TRUE 大于或等于begin_的值小于或等于 end_expression的值。
所以你得到的结果是正确的。 BETWEEN只是一个简写。
答案 2 :(得分:4)
还应该在某处(我没有完全阅读)说明左边的值应该小于或等于右边的值。您不应该仅仅因为文档可能没有明确告诉您不要向后编码。 : - )