对负数使用 Between 运算符

Using the Between Operator for negative numbers

为什么使用 between 运算符对正数有效,而对负数却不行?

select case when 1.25 between 1 and 2 then 'Works'else 'no' end --- returns WORKS

select case when -1.25 between -1 and -2 then 'works' else 'no' end -- Returns NO
select case when -1.25 between -2 and -1 then 'works' else 'no' end -- Returns works

试试下面的方法: 您需要与 1.0 或 2.0 之类的浮点值进行比较,并且范围应该按正确的顺序进行比较,最小值将首先出现,然后是最大值,例如 -2.0 首先是最小值,然后是 -1.0

select case when 1.25 between 1.0 and 2.0 then 'Works' else 'no' end 

select case when -1.25 between -2.0 and -1.0 then 'works' else 'no' end

负值从 -2 增长到 -1。当然,BETWEEN中的test_expressionbegin_expressionend_expression的数据类型必须相同。

所以你必须使用这个:

select case when 1.25 between 1.0 and 2.0 then 'Works' else 'no' end -- returns WORKS
select case when -1.25 between -2.0 and -1.0 then 'works' else 'no' end -- Returns WORKS