NANVL函数
NANVL函数语法:NANVL(n2, n1)功能介绍:nanvl函数只针对浮点数binary_float或binary_double有效,如果n2是一个NAN(不是一个数值),该
NANVL函数
语法:NANVL(n2, n1)
功能介绍:
nanvl函数只针对浮点数binary_float或binary_double有效,如果n2是一个NAN(不是一个数值),该函数使数据库返回一个可替换的值n1,如果n2不是NAN,则返回n2。
这个函数参数接收任何数值类型或者能隐式转换为数值类型的非数值类型数据。Oracle确定参数最高数值优先级,隐式转换剩余的数据类型为该类型,然后返回该类型的数据。
注:NaN只能插入到binary_double和binary_float类型的字段中。
最高数值优先级说明:
对于支持数值类型的操作,如果该操作包含不同数值类型,那么最高数值优先级确定数据类型,binary_double有最高的数值优先级,接下来是binary_float,最后是number,因此,在任何有多个数值的操作中:
- 任意操作数类型为binary_double,则Oracle会将所有操作数隐式转换为binary_double,然后再执行相关操作。
- 如果没有操作数类型为binary_double,但是有操作数类型为binary_float,则Oracle将所有操作数隐式转换为binary_float,然后再执行相关操作。
- 除此之外,Oracle尝试将所有的操作数转换为数值类型,然后再执行相关操作。
在其他数据类型的上下文中,数值数据类型的优先级低于datetime/interval数据类型,而高于字符和所有其他数据类型。
例子:
SQL> CREATE TABLE float_point_demo(dec_num NUMBER(10,2), bin_double BINARY_DOUBLE, bin_float BINARY_FLOAT);nnTable created.nnSQL> INSERT INTO float_point_demo VALUES (0,'NaN','NaN');nn1 row created.nnSQL> SELECT * FROM float_point_demo;nn DEC_NUM BIN_DOUBLE BIN_FLOATn---------- ---------- ----------n 0 Nan Nan
下面的例子,如果bin_float是一个数字,则返回bin_float。否则返回0。
SQL> SELECT bin_float, NANVL(bin_float,0) FROM float_point_demo;nn BIN_FLOAT NANVL(BIN_FLOAT,0)n---------- ------------------n Nan 0nnSQL> SELECT bin_double, NANVL(bin_double,0) FROM float_point_demo;nnBIN_DOUBLE NANVL(BIN_DOUBLE,0)n---------- -------------------n Nan 0
上一篇:navicat 应用
下一篇:Mac安装Navicat