Oracle decode函数的使用

decode 可用于Oracle、impala数据查询
语法
DECODE(expr, search, result [, search, result ]...  [, default ])
即DECODE(value,if1,then1,if2,then2,if3,then3,...,else)

类似于case when, value匹配到if1,则返回then1,都匹配不到返回else,else省略则返回null

例:
select decode(month,1,'一月',2,'二月',else)

 

 

 DECODE compares expr to each search value one by one. If expr is equal to a search, then Oracle Database returns the  corresponding result. If no match is found, then Oracle returns default. If default is omitted, then Oracle returns null.

以下是翻译的官方解释

DECODEexpr逐个比较每个search值。如果expr等于 search,则Oracle Database返回相应的result。如果未找到匹配项,则Oracle返回default。如果default省略,则Oracle返回null。

参数可以是任何数值类型(的NUMBERBINARY_FLOATBINARY_DOUBLE),或字符类型。

  • 如果exprsearch是字符数据,那么Oracle使用nonpadded比较语义对它们进行比较。exprsearchresult可以是任何数据类型的CHARVARCHAR2NCHAR,或NVARCHAR2。返回的字符串是VARCHAR2数据类型,与第一个result参数的字符集相同。

  • 如果第一search-result对是数字,则Oracle比较所有search-result表达式,第一expr对确定具有最高数字优先级的参数,隐式地将剩余参数转换为该数据类型,并返回该数据类型。

searchresultdefault值可以从表达式得出。Oracle数据库使用短路评估。数据库search仅在比较每个值之前评估每个值expr,而不是search在比较任何值之前评估所有值expr。因此,Oracle从不评估a search是否search等于expr

在比较之前,Oracle会自动将expr每个search值转换为第一个值的数据类型search。Oracle会自动将返回值转换为与第一个相同的数据类型result。如果第一个result具有数据类型CHAR或第一个result为null,则Oracle将返回值转换为数据类型VARCHAR2

DECODE函数中,Oracle认为两个空值是等价的。如果expr为null,则Oracle返回result第一个search也为null的。

可在组件的最大数量DECODE的功能,包括exprsearchesresults,和default,为255。

你可能感兴趣的:(Oracle函数)