举一反三思路思考形如(列=参数 or decode函数)

1、问题

最近又遇到新鲜的语句写法

bash 复制代码
select count(1) from test
where (c1=5
or DECODE(c1, 1, 6, NULL, 6, c1) =6
);

计划:

首先语句主要的问题在于or条件

首先理解decode函数

bash 复制代码
DECODE(expression, search1, result1, search2, result2,..., default_result)
expression:是要进行判断的表达式。
search1、search2等:是依次要与expression进行比较的值。
result1、result2等:是当expression与相应的search值相等时返回的结果。
default_result:是当expression与所有的search值都不相等时返回的默认结果。

那么可以得出

DECODE(c1, 1, 6, NULL, 6, c1) =6

C1=1结果赋值为6,null结果赋值为6,其他还是c1,最终满足等于6的条件。

还记得之前分享过形如(列 is null or 列等值)改写成nvl,此时利用举一反三思维,

最终其实就是求c1=5,1,null,然后null可以用nvl,最终

(c1=5

or DECODE(c1, 1, 6, NULL, 6, c1) =6

);

改成nvl(c1,6) in (1,5,6)

2、改写

bash 复制代码
select count(1) from test
where (nvl(c1,6) in (1,5,6)
)

计划:

**

3、小结

**

本次想分享的是举一反三思路,null和or要思考之前or改写的案例,这样遇到同类场景就有优化的招数。

相关推荐
Xzh04231 小时前
Redis黑马点评 实战复盘与面试高频考点详解
java·数据库·redis·面试
林的快手1 小时前
MySQL
数据库·oracle
身如柳絮随风扬2 小时前
MySQL 存储引擎深度解析:InnoDB vs MyISAM vs Memory,行锁实现与索引奥秘
数据库·mysql
KaMeidebaby2 小时前
卡梅德生物技术快报|基因测序技术在 46,XY 性发育障碍变异筛查中的流程与数据分析
服务器·前端·数据库·人工智能·算法·数据挖掘·数据分析
AI周红伟2 小时前
长鑫科技存储之王:存储三强对比:三星、SK海力士 vs 长鑫科技
数据库·人工智能·科技·react.js·架构·langchain
灰阳阳2 小时前
MySQL-Innodb-表空间数据组织方式
数据库·mysql·innodb
计算机安禾2 小时前
【算法设计与分析】第29篇:启发式与元启发式搜索方法综述
java·数据库·算法
DIY源码阁2 小时前
JavaSwing学生选课系统 - MySQL版
java·数据库·mysql·eclipse
城管不管2 小时前
Agent——001
android·java·数据库·llm·prompt