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;
相关推荐
莫晓燚16 分钟前
阿里云若依项目部署与日志采集---实战
运维·数据库·redis·阿里云·ruoyi
香蕉大香蕉(06敬畏市场)42 分钟前
MySQL 单点详解(08)
java·数据库·mysql·面试·八股
l1t1 小时前
DeepSeek总结的如何在 PostgreSQL 中删除一张 4 TB 的表
数据库·postgresql
ClouGence1 小时前
开源数据库管理工具 CloudDM 发布新版本,支持团队多级审批工单,无需依赖第三方系统
数据库·sql·开源
李纲明2 小时前
WordPress 报建立数据库连接时出错:先核 wp-config 四元组,再查 MySQL 服务与表修复
运维·数据库·mysql·wordpress·排障·devdiy
是真的小外套2 小时前
网络安全实战第15期:SQL注入根源之一条拼接语句的警示
sql·安全·web安全
鸢尾掠地平3 小时前
MySQL之DML(含例子)
数据库·mysql
香蕉大香蕉(06敬畏市场)3 小时前
MySQL 单点详解(06)
java·数据库·mysql·博客·实习
CodeHackerBhx3 小时前
MySQL 迁达梦踩坑实录:FIND_IN_SET、timestamp(6) 和一整批要改的函数
数据库·mysql·达梦·信创·数据库迁移
n 55!w !1084 小时前
MySQL笔记整理2
数据库·笔记·mysql