oracle使用case或decode语句实现批量更新

Oracle条件逻辑全解析:IF语句、CASE表达式与DECODE函数实战指南 在数据库开发中,条件逻辑是处理业务规则和数据转换的核心技术。其原理是通过判断条件执行不同分支,实现动态数据处理。掌握条件逻辑对编写高效、可维护的SQL和PL/SQL代码至关重要,能显著提升查询性能和系统健壮性。在Oracle数据库中,条件逻辑广泛应用于数据清洗、报表生成、动态过滤和业务规则实施等场景。本文聚焦Oracle实现条件判断的三种核心方式:PL/SQL中的IF语句适用于封装复杂的过程化业务逻辑;SQL中的CASE表达式则以声明式风格在查询中实现灵活的值转换和分类;而DECODE函数作为历史遗留方案, 阅读详情

最近使用oracle数据库做开发,一开始只需要批量更新多条记录中的某一个字段,后来需求变更需要对多个字段进行更新,故查看资料得到如下内容,分享给大家。我在oracle 10g环境下,都能跑通。

批量更新一个字段:

复制代码

1 UPDATE categories 
2     SET display_order = CASE id 
3         WHEN '1' THEN 3 
4         WHEN '2' THEN 4 
5         WHEN '3' THEN 5 
6     END
7 WHERE id IN ('1','2','3');

复制代码

或者更普遍的方式:

复制代码

UPDATE test
    SET first_name = CASE 
        WHEN card_no = 100 THEN 'aaa'
        WHEN card_no = 110 THEN 'bbb'
        ELSE first_name
    END

复制代码

如果要批量更新多条记录的多个字段,则

复制代码

UPDATE categories 
    SET display_order = CASE id 
        WHEN '1' THEN 3 
        WHEN '2' THEN 4 
        WHEN '3' THEN 5 
    END, 
    title = CASE id 
        WHEN '1' THEN 'New Title 1'
        WHEN '2' THEN 'New Title 2'
        WHEN '3' THEN 'New Title 3'
    END
WHERE id IN ('1','2','3')

复制代码

或

复制代码

UPDATE test
    SET first_name = CASE 
        WHEN card_no = 100 THEN 'aaa'
        WHEN card_no = 110 THEN 'bbb'
        ELSE first_name
    END,
    last_name = CASE 
        WHEN card_no = 100 THEN 'xxx'
        WHEN card_no = 110 THEN 'yyy'
        ELSE last_name
    END    

复制代码

每个部分都罗列了两种方法,第二种方法更普遍,case后面直接是when,when里面可以包含更复杂的添加,比如大于小于等;但是第一种方法虽然case后直接指明了条件字段id,但因为有where的限制,执行起来更块一些把,其实针对第二种方法也可以加where以限制的。

 

另外,还看到一种使用decode的批量更新方法,不过好像decode的效率要低一些。

UPDATE test
SET first_name = DECODE(card_no,100,'aaa',110,'bbb')
   ,last_name = DECODE(card_no,100,'xxx',110,'yyy')
WHERE card_no IN (100,101)
别再为采样窗口发愁了!手把手教你用STM32实现三电阻分扇区电流采样(附代码避坑) 本文详细介绍了STM32平台下三电阻分扇区电流采样的实现方法,重点解决采样窗口选择不当和扇区切换逻辑问题。通过PWM定时器与ADC协同工作的底层机制分析,提供可移植的代码示例和实战经验,帮助工程师在电机矢量控制(FOC)系统中实现高精度相电流采样。 阅读详情

相关推荐

从SRIOV到SIOV:PCIe虚拟化技术下一代革命

如果说SR-IOV是过去十年PCIe虚拟化的“标杆方案”,那SIOV就是为超大规模云数据中心、AI集群量身打造的“破局者”——它解决了SR-IOV难以逾越的扩展性瓶颈,同时平衡了性能、成本与生态兼容性。今天就从“为什么需要SIOV”到“SIOV到底强在哪”,再到“未来要解决什么问题”,做一次全方位深度拆解。

存储随笔 2557

【SQL】ORACLE更新多行数据,利用decode函数,对应关系,改数据

需求如下: 数据库如下: 要求上面移动,数据库作对应改变。。。用decode函数,可以一条SQL改变三条语句。 实际运行SQL如下: UPDATE CC_SYS_FRAME SET FRAME_LEVEL = decode(FRAME_NAME, '设备',1 , '子系统',2 , '角色',3 ,FRAME_LEVEL) WHERE SYS_NA

capricornce的博客 3058

2022年TI杯模拟电⼦系统设计专题邀请赛——李萨如图形演示装置

本次装置主要是对输入的正弦信号进行频率变换,并将原输入正弦信号作为 X 轴信号、变换后的正弦信号作为 Y 轴信号,绘制李萨如图形。采用 EK-TM4C123GXL 板卡作为主控;频率变换采用“锁向环+计数器”实现 1-5 倍频的频率变换控制;李萨如图形采用两个 AD通道采集原输入的正弦信号作为 X 轴信号和频率变换后的正弦信号作为 Y 轴信号,绘制李萨如图形。

qq_45890466的博客 7766

Oracle--decode函数、(case when then else end )和(update set replace)的用法

Oracle--(case when then else end )和(update set replace)的用法

ChangWen的博客 4164

中国银行信息科技岗位笔试

收到笔试只剩四天了,收集的资料,后续会更新

weixin_46050242的博客 4592

大聪明教你学Java | Seata 2.5 从下载到运行:全流程编译部署教程

Seata 2.5 版本带来了不少特性优化,但实际部署时却发现一个尴尬问题:全网找不到一篇完整覆盖「Git 源码下载→本地编译→环境配置→启动验证」的实操教程。作为一名踩遍无数坑才成功跑通的开发者,我深知这个过程的煎熬:Git 拉取源码后编译失败、依赖版本冲突、配置文件参数混乱、启动时端口占用或连接报错… 每一个坑都能耗费数小时排查。为了让后续开发者少走弯路,我将自己从0到1的完整实操经验整理成文,跟着步骤走即可成功运行 Seata 2.5.

不肯过江东丶 2071

ORACLE多字段CASE WHEN

case when可以根据条件重设某个字段的返回值,但是一般情况下都是根据本字段的值来返回需要的值,如: select t.Name, (case t.id --此处可以省略括号...

4881

实时多目标跟踪(MOT):SORT与DeepSORT优化

实时多目标跟踪(MOT):SORT与DeepSORT优化​ ,人工智能,计算机视觉,大模型,AI,本文围绕实时多目标跟踪中的 SORT 与 DeepSORT 算法展开,阐述了两者原理、实现及优化。SORT 结合卡尔曼滤波和匈牙利算法,依赖目标检测,实时性好但复杂场景表现欠佳。DeepSORT 在其基础上引入外观特征,采用级联匹配,提升了跟踪精度和鲁棒性。还探讨了两种算法在检测、运动模型、外观特征等方面的优化方向,以及应用场景与选择建议,为相关应用和研究提供参考。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 20万+

nvl函数

NVL(E1, E2)的功能为:如果E1为NULL,则函数返回E2,否则返回E1本身。 但此函数有一定局限,所以就有了NVL2函数。 NVL2(E1, E2, E3)的功能为:如果E1为NULL,则函数返回E3,若E1不为null,则返回E2。  ...

weixin_34150224的博客 292

AUTOSAR AP——SM模块

对AUTOSAR AP中状态管理模块SM,从模块定义、总结等多方面进行了介绍。

weixin_43627682的博客 284

2、探索谷歌云平台(GCP):入门指南

本文全面介绍了谷歌云平台(GCP)的入门知识,涵盖其全球基础设施、核心服务和使用方法。内容包括GCP区域与可用区结构、创建免费账户、配置计算资源(如GCE虚拟机)、存储类型(PD、Filestore、GCS)、网络架构(VPC)、组织与项目管理、身份访问控制(IAM),以及计算、存储、数据库、大数据和人工智能等各类云服务。文章还提供了资源规划、安全管理和成本控制等实用建议,帮助用户快速上手并高效利用GCP构建可扩展的云解决方案。

uber9的博客 254

Oracle 使用Update语句对一个字段或者多个字段批量添加数据

Oracle 使用Update语句对一个字段或者多个字段批量添加数据

H_jrqn的博客 3600

深度解析:C# Modbus TCP协议解析与异常处理(工控上位机必备)

协议解析要精准:掌握MBAP头和PDU的结构,尤其是常用功能码的请求/响应格式,避免因字节处理错误导致通信失败;异常处理要全面:覆盖通信层、协议层、数据层的所有异常类型,针对工业场景制定重试、重连、滤波等策略;资源管理要规范:使用释放资源,采用连接池复用连接,避免端口泄露;工业场景要适配:结合工控现场的特点(网络波动、电磁干扰、设备忙),优化通信效率和数据处理逻辑。通过以上解析和策略,可确保C#上位机与工业设备的Modbus TCP通信具备高稳定性、高可靠性、高容错性,满足工控领域的严苛要求。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 997

浅析Oracle之case语句

转自:https://blog.youkuaiyun.com/shangboerds/article/details/41989283大家对IF ELSE语句应该都很熟悉吧,它是用来对过程进行控制的。在SQL的世界中CASE语句有类似的效果。下面简单的介绍CASE语句的用法。考虑下面的情况,假设有个USER_INFO表,定义如下:[sql]  查看纯文本 CREATE TABLE  USER_INFO   (...

海阔天空sky的博客 1373

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

oracle 逐层更新,oracle 批量更新之update case when then

oracle 批量更新之update case when thenCreationTime--2018年8月7日15点51分Author:Marydon1.情景描述根据表中同一字段不同情况下的值修改为对应的内容,如何实现?使用case when then else end语句。2.错误用法没有else语句,将会导致全表更新证实:结果展示:说明:更新的是全表记录,而不是更新的只是符合上面三种情况的记...

weixin_39724889的博客 775

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

decode函数用法

decode 函数在sql中作用相当于case when,意思是根据某一字段的值作为条件,根据这个条件进行输出。 例如 case when 语句: 例如:根据身份证判定该员工是否是男女,从而实现对性别的更新。 身份证号的第17位数字,奇数为男性,偶数为女性 SEX CHAR(1) NOT NULL, --** 性别: 1 男,2 女 UPDATE table_name SET SEX = (CASE WHEN mod(identifynumber[17],2) = '1' THEN '1' ELSE '

qq_32783151的博客 2万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Oracle SQL中的 IF ELSE

-- Start 大家对 IF ELSE 语句可能都很熟悉,它是用来对过程进行控制的。在 SQL 的世界中 CASE 语句有类似的效果。下面简单的介绍 CASE 语句的用法。考虑下面的情况,假设有个 USER_INFO 表,定义如下: CREATE TABLE USER_INFO ( NAME VARCHAR2(20) NOT NULL, ---姓名 GENDE

千里之行始于足下 6万+

Oracle用decode函数或CASE-WHEN实现自定义排序

1 问题 对SQL排序,只要在order by后面加字段就可以了,可以通过加desc或asc来选择降序或升序。但排序规则是默认的,数字、时间、字符串等都有自己默认的排序规则。有时候需要按自己的想法来排序,而不是按字段默认排序规则。 比如字段值为英文字段:Monday、Tuesday、Wednesday等,如果按字段默认排序规则就为: Friday Monday Saturday Sunday Thursday Tuesday Wednesday 实际我需要的是: Monday Tuesday Wednesd

南瓜慢说 573

decode函数_Oracle用decode函数或CASE-WHEN实现自定义排序

1 问题 对SQL排序,只要在order by后面加字段就可以了,可以通过加desc或asc来选择降序或升序。但排序规则是默认的,数字、时间、字符串等都有自己默认的排序规则。有时候需要按自己的想法来排序,而不是按字段默认排序规则。 比如字段值为英文字段:Monday、Tuesday、Wednesday等,如果按字段默认排序规则就为: Friday Monday Saturday Sunday Th...

weixin_39697660的博客 302

7- Decode和Case

 1.DECODE, NVL, and NVL2简介:These functions are used to make decisions based on data values within an SQL statement without resorting(求助) to a procedural language like PL/SQL DECODE和NVL、NVL2函数语

pengpenglin的专栏 1843

大数据开发必备技能_第一阶段06_Oracle条件判断函数:DECODE与CASE WHEN完全指南

如果你对大数据开发充满好奇,但苦于零基础不知从何入手,这系列文章就是为你量身定制的!零门槛入门:无需编程经验,从最基础的SQL查询讲起,手把手带你理解数据操作的核心逻辑。实战为王:每章附赠真实场景练习题,边学边练,拒绝纸上谈兵。转行利器:内容直击企业高频需求(数据清洗、分析、可视化),搭配职场避坑指南,助你快速构建“可迁移技能”。系统进阶:从数据类型到复杂查询,从运算符到执行顺序,层层递进,帮你搭建扎实的大数据地基。

weixin_43560239的博客 1032

oracle case when 的用法

在Oracle数据库中,CASE WHEN语句是一个条件表达式,它允许你基于不同的条件执行不同的操作。该语句在SELECTUPDATEDELETE语句以及PL/SQL块中都非常有用。下面是关于CASE WHEN。

weixin_41203765的博客 9126

oracle 批量更新之update case when then

oracle 批量更新之update case when then CreationTime--2018年8月7日15点51分 Author:Marydon 1.情景描述   根据表中同一字段不同情况下的值修改为对应的内容,如何实现?   使用case when then else end语句。 2.错误用法   没有else语句,将会导致全表更新   证实:   ...

weixin_30664539的博客 678

Oracle的case if else用法

转载出处:https://blog.youkuaiyun.com/shangboerds/article/details/41989283 经常有这类问题,比如性别的男女,一般在数据库中不存男女,而存数字0或1,1或2,查询出来展示的时候做转换。 CREATE TABLE USER_INFO (     NAME        VARCHAR2(20) NOT NULL,  ---姓名     GENDE...

Sun_of_Rainy的博客 3594

oracle decode 用模糊_Oracle用decode函数或CASE-WHEN实现自定义排序

1 问题 对SQL排序,只要在order by后面加字段就可以了,可以通过加desc或asc来选择降序或升序。但排序规则是默认的,数字、时间、字符串等都有自己默认的排序规则。有时候需要按自己的想法来排序,而不是按字段默认排序规则。 比如字段值为英文字段:Monday、Tuesday、Wednesday等,如果按字段默认排序规则就为: Friday Monday Saturday Sunday Th...

weixin_30531679的博客 773
上一篇: PHP大批量插入数据库的3种方法和速度对比
下一篇: TP3.2的URL忽略大小写配置导致找不到模板
赛克尔
博客等级 码龄12年 8粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值