binary_double数据类型
在SQL和PL/SQL都有数据类型binary_double,binary_double类型的数据不会抛出异常,所以你需要和Oracle提供的常量进行比较来判断数据的合法性。
提供的常量 BINARY_DOUBLE_NAN:非数字
BINARY_DOUBLE_INFINITY:正无穷
比较方法1:
使用IS NAN判断返回的值是否是BINARY_DOUBLE_NAN
例如:
08:06:02 SCOTT@ orcl>select * from emp t where to_binary_double(t.sal) is NAN; no rows selected
注意没有 IS INF判断返回的值是否是正无穷
例如:
比较方法2:
08:06:06 SCOTT@ orcl>select * from emp t where to_binary_double(t.sal) is INF; select * from emp t where to_binary_double(t.sal) is INF * ERROR at line 1: ORA-00908: missing NULL keyword
直接使用提供的常量来比较
例如:
判断是否是非数字
08:10:05 SCOTT@ orcl>select * from emp t where to_binary_double(t.sal) =BINARY_DOUBLE_NAN; no rows selected Elapsed: 00:00:00.00
判断是否是正无穷
08:08:59 SCOTT@ orcl>select * from emp t where to_binary_double(t.sal) =BINARY_DOUBLE_INFINITY; no rows selected Elapsed: 00:00:00.00
比较方法3:
使用常量的简写
判断是否是非数字
判断是否是正无穷
08:13:19 SCOTT@ orcl>select * from emp t where to_binary_double(t.sal) ='NAN'; no rows selected
08:13:24 SCOTT@ orcl>select * from emp t where to_binary_double(t.sal) ='INF';
no rows selected
Elapsed: 00:00:00.00
后记:
建议使用方法1或者2,方法3属于自己发明的。在官方文档上未找到例子。
在PL/SQL中除了上面的2个常量还有另外4个分别是:
BINARY_DOUBLE_MAX_NORMAL
BINARY_DOUBLE_MIN_NORMAL
BINARY_DOUBLE_MAX_SUBNORMAL
BINARY_DOUBLE_MIN_SUBNORMAL
请勿用在SQL语句中使用。
和binary_double对于的数据类型还有float_double用法雷同不再重述。