sql的where条件中使用case when

场景:

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进行判断

sql 复制代码
select * from t 
where (case when max is not null and monry > min
                 and monry <= max 
              then 1
            when max is null and monry > min
              then 1
           else 0
       end) = 1;
相关推荐
dishugj4 分钟前
【Oracle】 Flashback(闪回)技术实操指南
数据库·oracle·flashback
白山云北诗7 分钟前
中小企业如何做好企业官网的网络安全
网络·数据库·web安全·ddos·cc·企业网络安全
lkbhua莱克瓦2422 分钟前
进阶-存储对象2-存储过程上
java·开发语言·数据库·sql·mysql
码农胖虎-java27 分钟前
【AI】向量数据库选型实战:pgvector vs Milvus vs Qdrant
数据库·milvus·pg
Insist75334 分钟前
KingbaseES 集群运维案例之 --- 集群架构拆分为单实例操作
网络·数据库·oracle
m0_5981772335 分钟前
MySQL项目开发 (2)
数据库·mysql
lkbhua莱克瓦241 小时前
进阶-存储对象1-视图
java·数据库·sql·mysql·视图
IvorySQL1 小时前
用 PostgreSQL 实践 Palantir 本体论
数据库·postgresql·开源
yangminlei1 小时前
Spring Boot 自动配置原理与自定义 Starter 开发实战
java·数据库·spring boot
萧曵 丶1 小时前
Redis 由浅到深面试题(分层次版)
数据库·redis·缓存