场景:
1、使用oracle数据库,数据类型为number,需要正无穷值。
2、数据表中有两个金额值,最大值和最小值, 如10~20, 30 ~40,40以上,数据库中这样设计
id name min max
1 j 10 20
2 v 30 40
3 a 40
问题描述
当金额为参数,通过 金额 > min and 金额 <=最大值 作为sql条件,因为oracle中没有正无穷表示,所以用空来表示无穷大。这样就存在 sql:金额 <= null 的情况。
解决方案:
我们在where条件的后边使用case进行判断
select * from t
where (case when max is not null and monry > minand monry <= max then 1when max is null and monry > minthen 1else 0end) = 1;