举一反三思路思考形如(列=参数 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改写的案例,这样遇到同类场景就有优化的招数。

相关推荐
herinspace21 小时前
管家婆财贸ERP如何进行基本信息批量搬移
服务器·数据库·管家婆软件·财务软件
小马92621 小时前
智能体时代的两块基石:DeepSeek Harness 开源与“认知基础设施“数据库
数据库·人工智能·开源·agent
那年窗外下的雪.1 天前
VXLAN EVPN 分层排障:从 VTEP 可达、ARP/MAC 到 MAC Mobility
服务器·前端·网络·数据库·spine
冰暮流星1 天前
mysql练习1
数据库·mysql
三8441 天前
MySQL 文件读写函数详解:从 CTF 实战到 LOAD_FILE、INTO OUTFILE、LOAD DATA INFILE 应用
数据库·sql
来让爷抱一个1 天前
拯救我的“烂尾“项目:我用MonkeyCode把五个AI热点实践了个遍
网络·数据库·人工智能·prompt·ai编程
可涵不会debug1 天前
LangChain 示例选择器(Example selectors)完整基础概念解读
服务器·前端·数据库
_Narcissus_1 天前
B树概念及操作笔记(含完整代码实现)
c语言·数据结构·数据库·c++·笔记·b树·算法
l1258651 天前
# RAG多轮对话检索设计:Query重写如何让“那它呢“变成完整问题
前端·数据库·人工智能·python·算法·fastapi·milvus
小弥儿1 天前
GitHub今日热榜 | 2026-08-20:Agent 上下文数据库接棒
数据库·学习·开源·github