`

case与decode的区别

阅读更多
  • decode的用法:
SELECT
  DECODE
  (
    '持久层技术缩写',
    j,   'jdbc',
    h,  'hibernate',
    i,   'ibatis',
    j,   'JPA'
         'other'
  ) AS '具体持久方式'
FROM    'java开发';

可以清楚的看出decode是一个一对一译码过程,这也是它为什么叫decode的原因。

 

  • case有两种情况:

          1.serach case的用法

SELECT
  CASE
    WHEN '女人特征' = '臭味相投'
      THEN '死党'
    WHEN '女人特征' = '端庄贤慧'
      THEN '老婆'
    WHEN '女人特征' = '善解人意'
      THEN '红颜知己'
    WHEN '男人特征' = '志同道合'
      THEN '朋友'   
    WHEN '男人特征'  < '道德底线'
      THEN '小人远之'    
    ELSE '不做选择'
  END  AS '人际交往'
FROM    '社会';

可以看出有多种选择,而且可以是不同字段,安顺序进行匹配谁先匹配上了就end,另外它可以对范围进行判断,这是decode不具备的功能

 

          2.simple case的用法

 

 

SELECT
  CASE
    '持久层技术缩写',
    WHEN 'j' THEN  'jdbc'
    WHEN 'h' THEN  'hibernate'
    WHEN 'i' THEN  'ibatis'
    WHEN 'j' THEN  'JPA'
    ELSE    'other'
  END  AS '具体持久方式'
FROM    'java开发';

 

这种方式其实可decode基本一样

 

decode用的人比较多,可能是因为它出现的比较早,case是在oracle8.1以后才加入的,在之前要在sql中实现if else的逻辑判断却需要其它辅助函数floor和sign。另外decode的用法比较简洁我觉得也是一个原因。

由于case是SQL标准, 所以使用的时候最好优先考虑case语句。

 

参考了:Frank Kulash的解释

分享到:
评论

相关推荐

    Oracle-Decode()函数和CASE语句的比较

    本文讲述了Oracle-Decode()函数和CASE语句的比较。

    decode函数与case when 的妙用

    NULL 博文链接:https://hcty31.iteye.com/blog/1119556

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

    主要介绍了Oracle用decode函数或CASE-WHEN实现自定义排序功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

    Oracle_case_when_用法

    详细讲解了case、when的用法.ASE表达式可以在SQL中实现if-then-else型的逻辑,而不必使用PL/SQL。CASE的工作方式与DECODE()类似,但应该使用CASE,因为它与ANSI兼容。

    ORACLE DECODE函数在中国式报表统计查询中的组合条件实现

    但是在遇到需要组合条件进行统计时,有时却不如case when 或者另建视图好用。 可是有时就想用DECODE,咋办? 这里给大家介绍一下DECODE如何实现组合条件查询,一句SQL查询一张中国式报表。 (本文的示例,在实际业务...

    mysql仿oracle的decode效果查询

    以下代码在MYSQL中测试通过,MSSQL... #mysql执行 select sum(case when c = ‘1’ then A else B end) from tmp #oracle执行 select sum(decode(c,’1′,a,b)) from tmp #普通联合查询 select sum(d) from ( select

    arduino红外接收发射库,放入libraries即可

    decode_results results; void setup() { Serial.begin(9600); pinMode(9,OUTPUT); irrecv.enableIRIn(); // Start the receiver Serial.println("setup over"); } void loop() { if (irrecv.decode(&...

    Oracle的列转行问题

    网络上流传了很多将行数据转换称列数据的方法和应用实例,一般通过decode或者case函数与聚合函数联合实现功能,这里就不再重复。 日前本人在一个偶然的应用中用到了一个需要将列数据转换为行数据的问题。搜索了很久...

    Oracle高级sql学习与练习

    6、DECODE函数和行列互换 7、CASE表达式 8、ROWNUM-TOP-N分析 9、相关子查询和非相关子查询 10、增强GROUP BY 11、分析函数(ANALYTICAL FUNCTIONS) 12、ROWID的使用 13、ORACLE 10G正则表达式 14、使用HINT 15、...

    oracle sql of extracting table structure

    then all_c.data_type || decode(all_c.data_precision,0,'',NULL,'','(' || to_char(all_c.data_precision)) || decode(all_c.data_precision,0,'',NULL,'', decode(all_c.data_scale,0,'',NULL,'', ',' || to_...

    数据结构--填词游戏

    #include "utility.h" #include "Encrypt.h" int main(void) ... strcpy(destination,objEncrypt.DeCode(source).CStr()); cout解密串:"; break; } } system("PAUSE"); return 0; }

    文本串的加密

    #include "utility.h" #include "Encrypt.h" int main(void) ... strcpy(destination,objEncrypt.DeCode(source).CStr()); cout解密串:"; break; } } system("PAUSE"); return 0; }

    ucenter_asp_api

    code = uc_authcode(code,"DECODE",UC_KEY) Set tget = parse_str(code) If Len(code) Response.write "Invalid Request" Response.End() End If ttime = tget("time") If Not IsNumeric(ttime) Or ttime = "" ...

    Oracle 数据显示 横表转纵表

    横表转纵表亦可用与decode意义相似的case语句实现,原理同该语句,这里不再过多描述。

    oracle获取上一旬的开始时间和结束时间的实现函数

    代码如下: — 获取上旬开始... select case decode(trunc((to_char(v_rq, ‘dd’) – 1) / 10), 0, ‘上旬’, 1, ‘中旬’, ‘下旬’) when ‘上旬’ then –返回上个月的下旬 to_char(add_months(v_rq, -1), ‘yyyyMM

    oracle常用知识

    多年来的一点oracle知识积累decode替代case,Drop含有特殊字符的表,Oracle的物化视图的建立方法,动态查询语句返回结果集,利用ORACLE的MINUS函数和OVER函数,直接通过视图实现两个记录集的比较,在oracle中生成...

    OAuth2第三方登录

    {ob.nickName = Server.UrlDecode(ob.nickName);} //判断哪里返回的 switch (ob.OAuthType) { case "SinaWeiBo": ; info.OPENTYPE = (int)CommonEnumData.OAuthServerType.SinaWeiBo; loginName = "Sina_"; break; ...

    oracle database 10g 完整参考手册part1

    第16章 DECODE和CASE SQL中的if-then-else 第17章 创建和管理表、视图、索引、群集和序列 第18章 Oracle基本安全 第Ⅲ部分 高级内容 第19章 高级安全性—— 虚拟专用数据库 第20章 使用表空间 第21章 用SQL*Loader...

    SmartAssembly v6.6.1.31

    SmartAssembly can decode obfuscated stack traces in case you need to debug obfuscated assemblies. SmartAssembly can be integrated into build processes using MS Build or the command-line, and supports ...

Global site tag (gtag.js) - Google Analytics