语法
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";
注意事项
- decode参数最大数量不能超过255个。
- 同COALESCE一样,short-circuit evaluation,最小化计算,Oracle并不会把所有的search都计算出来,当判断出search=expr之后,剩下的search就不会再计算比较。
参考文档
- https://docs.oracle.com/database/121/SQLRF/functions057.htm#SQLRF00631
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




