首页 > 数据库 >oracle中case when 和 decode的区别

oracle中case when 和 decode的区别

时间:2023-04-13 17:22:21浏览次数:46  
标签:case when decode 类型 报错 oracle 返回值

1、decode简洁、case when复杂(但能实现的功能更多)

2、返回值类型,case when 的返回值类型必须一致如:

SELECT CASE WHEN 1=1 THEN 1 ELSE '0' END FROM DUAL;--这样会报错:ORA-00932:数据类型不一致:应为NUMBER,但却获得CHAR

     而decode的返回值类型需跟第一个返回值的类型一致(返回类型都依据第一个类型进行强制类型转换,第一个条件返回类型为null的时候,默认将其做为字符串处理)

SELECT DECODE('1', '0', 0, '99') FROM DUAL;--因为99能强制转换为数字类型,所以不报错
SELECT DECODE('1', '0', 0, 'NO') FROM DUAL;--因为NO不能强制转换为数字类型,所以报错:ORA-01722:无效数字

 

标签:case,when,decode,类型,报错,oracle,返回值
From: https://www.cnblogs.com/zlshtml/p/17315667.html

相关文章

  • oracle递归查询法
    select*from表名startwith查询的条件connectbyprior等值条件(一个表中两个值相等的字段)查询的结果集:满足连接的值=查询条件,startwith子句:遍历起始条件,有个小技巧,如果要查父结点,这里可以用子结点的列,反之亦然。connectby子句:连接条件。......
  • Oracle触发器
    触发器Oracle数据库对象,类似于存储过程和函数;存储过程和函数需要用户显示调用才可执行;触发器是由一个事件触发运行,当某个事件发生时会自动隐式的运行,不能被显示调用;触发器的本质是存储过程1.触发器执行的条件,即触发事件;2.执行触发器的时间,即发生事件之前before还是发生事......
  • a note when using docker locally
    whenbuildingthegetting-startedapplicationprovidedbyofficialsite,Igotaerrorsaying, #0138.4node-pre-gypERR!installrequesttohttps://github.com/TryGhost/node-sqlite3/releases/download/v5.1.2/napi-v6-linux-musl-x64.tar.gzfailed,reason:so......
  • oracle中if/else的三种实现方式详解
    oracle中if/else的三种实现方式详解1、标准sql规范1、单个IFIFv=...THENENDIF;2、IF...ELSEIFv=...THENELSEt....;ENDIF;3、多个IFIFv=...THENELSIFv=...THENt...;ENDIFL注意:多个IF的是'ELSIF'不是'ELSEIF'2、decode函数DECODE(VALUE,IF......
  • Oracle创建序列
    创建序列语法:CREATESEQUENCE序列名;--示例createsequenceSEQ_CX_TEXT_SEQ;----CreatesequencecreatesequenceSEQ_CX_TEXT_SEQminvalue1maxvalue9999999999999999999999999999startwith1incrementby1cache20;--如果指定cache,oracle预先在内存中放置......
  • XXL-JOB定时任务框架(Oracle定制版)
    特点xxl-job是一个轻量级、易扩展的分布式任务调度平台,能够快速开发和简单学习。开放源代码并被多家公司线上产品使用,开箱即用。尽管其确实非常好用,但我在工作中使用的是Oracle数据库,因为xxl-job是针对MySQL设计的,所以使用起来需要进行一些魔改。为了方便后人使用,我已经创建了许......
  • 漏洞-Oracle MYSQL Server 安全漏洞(CVE-2022-1292)
    https://blog.csdn.net/weixin_45839894/article/details/126158078openssl:relocationerror:openssl:symbolEVP_mdc2versionOPENSSinedinfilelibcrypto.so.1.1withlinktimereference建议先删掉/usr/bin/openssl......
  • oracle 常用数据字典表说明
    常用数据字典表数据字典表是oracle存放数据库信息的地方,其用途是用来描述数据的。数据字典表分类数据字典主要可分为四部分(1)内部RDBMS表:x$,用于跟踪内部数据库信息,维持DB的正常运行。是加密命名的,不允许sysdba以外的用户直接访问,显示授权不被允许。(2)数据字典表:$,如tab......
  • 如何将oracle.sql.TIMESTAMP 转换为 java date
    privateStringgetDate(Objectvalue){Timestamptimestamp=null;try{timestamp=(Timestamp)value;}catch(Exceptione){timestamp=getOracleTimestamp(value);}if(timestamp!=null)return(newSimpleDateFormat("yyyy-MM-ddHH:mm:ss.S&......
  • 在 Oracle 中查找 CPU 使用最多的会话或 SQL 查询
    Oracle中的前10个CPU消耗会话colprogramforma30heading"Program"colCPUMinsform99990heading"CPUinMins"selectrownumasrank,a.*from(SELECTv.sid,sess.Serial#,program,v.value/(100*60)CPUMinsFROMv$statnames,v$sess......