Oracle函数-DECODE
DECODE翻译为解码或译码,因为它可以把查询结果翻译成令用户容易理解的内容。
语法:

expr: 表达式
search:搜索值
result:结果值
default:默认值
DECODE函数的第一个参数是表达式,之后是成对的搜索值-结果值,最后是一个默认值。参数可以是任何数字类型或字符类型。
DECODE函数的作用是把表达式的的值与一些列搜索值比较,当表达式的值与搜索值相等时,返回搜索值对应的结果值,如果没有找到相等的搜索值,则返回默认值,如果默认值没有定义,返回NULL。执行逻辑跟CASE语句很相似。
参数类型的处理方式如下:
- 如果表达式和搜索值是字符数据,Oracle采用nonpadded semantics比较它们。结果值是VARCHAR2类型,并与第一个结果值的字符集相同。
- 如果第一对搜索值-结果值为数字类型,Oracle会比较所有的搜索值-结果值及表达式,按数字优先级来决定参数类型,并把其它参数的类型转换为该类型。
搜索值、结果值和默认值可以由表达式(不是指第一个表达式参数)计算。Oracle数据库使用短路计算的方式,仅在比较每个搜索值与表达式时才结算搜索值,而不是一次计算所有的搜索值。因此Oracle在找到等于表达式的值后,即使后面还有搜索值,也不会去计算它。
Oracle在比较表达式和每个搜索值时,先把它们转换为第一个搜索值得数据类型。Oracle自动将返回的结果值转换为第一个结果值的数据类型。如果第一个结果值的数据类型为CHAR或NULL,那么Oracle会将结果值转换为VARCHAR2。
在DECODE函数中,Oracle认为两个NULL值是相等的,如果表达式为NULL,Oracle返回第一个为NULL的搜索值的结果值。
DECODE参数的最大数量为255个。
下面的例子演示了DECODE函数的使用。DECODE将warehouse_id的值翻译成容易理解的字符串。如果warehouse_id的值是1,函数返回Southlake,如果warehouse_id的值是2,函数返回San Francisco。。。如果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";
Oracle函数-DECODE的更多相关文章
- oracle函数 decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
[功能]根据条件返回相应值 [参数]c1, c2, ...,cn,字符型/数值型/日期型,必须类型相同或null 注:值1……n 不能为条件表达式,这种情况只能用case when then end解 ...
- Oracle 中 decode 函数用法
Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译 ...
- 创建类似于Oracle中decode的函数
-- 创建类似于Oracle中decode的函数create or replace function decode(variadic p_decode_list text[])returns text ...
- Oracle / PLSQL函数 - DECODE
1.DECODE( expression , search , result [, search , result]... [, default] ) 参数说明: expression : 表中的某一 ...
- 简单接触oracle数据库nvl函数decode函数
SQL语句的DECODE()和NVL()函数用法 SELECT DECODE(choose_tool,0,'宝马',1,'电动车',2,'自行车','步行') AS my_tool FROM dat ...
- 【函数】Oracle函数系列(2)--数学函数及日期函数
[函数]Oracle函数系列(2)--数学函数及日期函数 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不 ...
- oracle中DECODE与CASE的用法区别
对于CASE与DECODE其实并没有太多的区别,他们都是用来实现逻辑判断.Oracle的DECODE函数功能很强,灵活运用的话可以避免多次扫描,从而提高查询的性能.而CASE是9i以后提供的语法,这个 ...
- oracle函数操作
感于总有些网友提出一些非常基础的问题,比如有没有实现某某功能的函数啊,某某函数是做什么用的啊,格式是什么等等,同时也感受到自己对oracle函数认识的不足,于是集中月余时间专注于oracle函数,小有 ...
- oracle 函数中,一定要注意出现空记录和多条记录的处理方法
今天折腾了3个小时,为一个以前不知道的oracle函数机制: 在sql查询中,如果一个查询未能获取记录,oracle不会报错 如select aa from bb where 1=2; 但在oracl ...
随机推荐
- AnguarJS 第二天----数据绑定
Terms 今天学习AngularJS双向数据绑定的特性,这里面需要提到两个概念: 数据模型:数据模型是指 $scope对象, $scope对象是简单的javascript对象,视图可以访问其中的属性 ...
- Hadoop学习笔记—14.ZooKeeper环境搭建
从字面上来看,ZooKeeper表示动物园管理员,这是一个十分奇妙的名字,我们又想起了Hadoop生态系统中,许多项目的Logo都采用了动物,比如Hadoop采用了大象的形象,所以我们可以猜测ZooK ...
- SQL Server 索引和表体系结构(包含列索引)
包含列索引 概述 包含列索引也是非聚集索引,索引结构跟聚集索引结构是一样,有一点不同的地方就是包含列索引的非键列只存储在叶子节点:包含列索引的列分为键列和非键列,所谓的非键列就是INCLUDE中包含的 ...
- Inter Core CPU 型号的尾字母含义
Inter Core CPU 型号的尾字母含义: M:表示移动处理器(Mobile Processor):QM:四核移动处理器(Quad Mobile Processor):U:超低电压处理器(Ult ...
- 《Entity Framework 6 Recipes》中文翻译系列 (8) -----第二章 实体数据建模基础之继承关系映射TPT
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 2-8 Table per Type Inheritance 建模 问题 你有这样一 ...
- C# 用原生JS进行文件的上传
1.此文章是用原生JS来进行文件的上传,有两个版本,一个不用ajax,一个用ajax. 1)非AJAX <!DOCTYPE html> <html> <head> ...
- angularjs controller 继承
前沿 最近在angularjs项目当中,看到 controller 好多都是重复性的代码,在 controller 当中有好多代码很相似 function(比如 controller 下的 CRUD ...
- 解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程
解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程 昨天开发人员跟我说,执行一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅 ...
- linux创建进程fork的方法步骤
fork创建进程 函数原型如下 #include// 必须引入头文件,使用fork函数的时候,必须包含这个头文件,否则,系统找不到fork函数 pid_t fork(void); //void代表没有 ...
- 查看Validate Subscription 的结果
Sql Server Replication Monitor 提供一个feature,能够verify Replication的 Publication 和 Subscription 的数据同步sta ...