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)
您链接的文档说:
如果test_expression的值大于或等于begin_and的值且小于或等于end_expression的值,则BETWEEN返回TRUE.
所以你得到的结果是正确的.BETWEEN只是一个简写.