parameter数据类型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";
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论