暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle decode 函数学习

原创 大道至简 2021-08-19
1196

语法

DECODE(expr, search1, result1 [, search2, result2 ]...  [, default ])

用途

判断expr表达式的值:

  • 如果等于search1的值,则返回result1;
  • 如果等于search2的值,则返回result2;
  • 如果等于search3的值,则返回result3;等等等…
  • 如果都不满足,则返回默认值default;
  • 如果没有设置default默认值,则返回null;

参数可以是任何数字类型(NUMBER、BINARY_FLOAT或BINARY_DOUBLE)或字符类型;

例子

判断warehouse_id的值:

  • 如果warehouse_id =1,则函数返回’Southlake’;
  • 如果warehouse_id是2,那么它返回’San Francisco’;
  • 如果warehouse_id是3,那么它返回’New Jersey’;
  • 如果warehouse_id是4,那么它返回’Seattle’;
  • 如果warehouse_id不是1、2、3或4,则函数返回’Non - domestic’。
SELECT product_id,
       DECODE (warehouse_id, 1, 'Southlake', 
                             2, 'San Francisco', 
                             3, 'New Jersey', 
                             4, 'Seattle',
                                'Non domestic') "Location" 
  FROM inventories
  WHERE product_id < 1775
  ORDER BY product_id, "Location";

注意事项

  1. decode参数最大数量不能超过255个。
  2. 同COALESCE一样,short-circuit evaluation,最小化计算,Oracle并不会把所有的search都计算出来,当判断出search=expr之后,剩下的search就不会再计算比较。

参考文档

  • https://docs.oracle.com/database/121/SQLRF/functions057.htm#SQLRF00631
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论