Oracle函数-DECODE

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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 <1775ORDER BY product_id, "Location";。

相关文档
最新文档