关于number...的精度问题
一
当数字的精度被定为number(3,2)时, 这时他能输入的数字整数部分只能是3-2=1位, 小数位如果不够会用0补齐, 超出的四舍五入保留3位小数.
SQL> insert into t_te(num1) values(45.67882);
insert into t_te(num1) values(45.67882)
ORA-01438: 值大于为此列指定的允许精度
SQL> insert into t_te(num1) values(12.3);
insert into t_te(num1) values(12.3)
ORA-01438: 值大于为此列指定的允许精度
SQL> insert into t_te(num1) values(1.3);
1 row inserted
SQL> select num1 from t_te;
 NUM1
-----
 1.30
二
当数字的精度被定为number(3,0)时, 这时能输入的数字整数部分只能是小于5位的, 小数部分全部四舍五入, 只留下整数. 这种情况在给定义列的数据类型的时候会被系统默认成number(3).
SQL> insert into t_te(num2) values(123.45);
1 row inserted
SQL> select num2 from t_te;
NUM2
----
 123
SQL> insert into t_te(num2) values(1234.45);
insert into t_te(num2) values(1234.45)
ORA-01438: 值大于为此列指定的允许精度
SQL> insert into t_te(num2) values(1.45);
1 row inserted
SQL> select num2 from t_te;
NUM2
----
 123
   1
SQL> insert into t_te(num2) values(1.89);
1 row inserted
SQL> select num2 from t_te;
NUM2
----
 123
   1
   2
三
当数字的精度被定为number(2,3)时, 这时能输入的数字就只能是小数了, 而且只能是小数点后(3-2=1)位小数, 整数位不能有数字.
SQL> insert into t_te(num3) values(1.89);
insert into t_te(num3) values(1.89)
ORA-01438: 值大于为此列指定的允许精度
SQL> insert into t_te(num3) values(0.89);
insert into t_te(num3) values(0.89)
ORA-01438: 值大于为此列指定的允许精度
SQL> insert into t_te(num3) values(0.089);
1 row inserted
SQL> select num3 from t_te;
NUM3
----
0.08
四
当数字的精度被定为number(3,-2)时, 这时输入的数字可以是任何一个整数部分小于5(3-(-2))位, 小数部分随意的数字, 但是系统会四舍五入保留百位显示.
SQL> insert into t_te(num4) values(12.3456);
1 row inserted
SQL> insert into t_te(num4) values(122.3456);
1 row inserted
SQL> insert into t_te(num4) values(1222.3456);
1 row inserted
SQL> insert into t_te(num4) values(122234253524.3456);
insert into t_te(num4) values(122234253524.3456)
ORA-01438: 值大于为此列指定的允许精度
SQL> insert into t_te(num4) values(12223.3456);
1 row inserted
SQL> insert into t_te(num4) values(122236.3456);
insert into t_te(num4) values(122236.3456)
ORA-01438: 值大于为此列指定的允许精度
SQL> select num4 from t_te;
 NUM4
-----
    0
  100
 1200
12200
五
当数字的精度被定为number(2,-3)时, 这时能输入的数字只要整数部分不超过5(2-(-3))位, 都不会报错, 小数位会直接被四舍五入. 系统只显示整数部分
SQL> insert into t_te(num5) values(12345);
1 row inserted
SQL> insert into t_te(num5) values(12345723);
insert into t_te(num5) values(12345723)
ORA-01438: 值大于为此列指定的允许精度
SQL> insert into t_te(num5) values(123456);
insert into t_te(num5) values(123456)
ORA-01438: 值大于为此列指定的允许精度
SQL> insert into t_te(num5) values(12345.345678);
1 row inserted
SQL> select num5 from t_te;
NUM5
----
12000
12000


关于number...的精度问题的更多相关文章
- 【转】JS中处理Number浮点数精度问题
		
https://github.com/dt-fe/number-precision ~(function(root, factory) { if (typeof define === "fu ...
 - oracle SQL查询number字段精度丢失之解决方法
		
解决办法: -- 3.3:表示原始数据 --fm9999999990.0000:表示保留到小数点后4位,若不存在则用0补位. ),'fm9999999990.0000') as demo from d ...
 - hibernate NUMBER 精度
		
通过Hibernate映射实体时会根据数据库中NUMBER类型的精度,生成相应的POJO类中相对应的主键类型.经过亲测结果如下: NUMBER(1) POJO类中生成的是Boolean publicc ...
 - Oracle类型number与PG类型numeric对比和转换策略
		
Oracle 11g number 任意精度数字类型 http://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT3 ...
 - Oracle 数据库语句大全
		
Oracle数据库语句大全 ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CH ...
 - 非常好的Oracle教程【转】
		
http://www.blogjava.net/kiant/articles/234781.html Oracle 笔记(四).SQL 几个要点 附录: 1.SQL 简介 2.SQL 操作符 3.Or ...
 - ORACLE常见数据类型详解
		
1.字符类型 • CHAR:一个定长字符串,当位数不足自动用空格填充来达到其最大长度.如非NULL的CHAR(12)总是包含12字节信息.CHAR字段最多可以存储2,000字节的 信息. • VARC ...
 - Oracle 常用数据类型(转)
		
varchar2(6) 张三 --在jbk中是两个字节,在utm中是三个字节char(6) 张 三 --可以确定长度的用charclob --大存储,没事少用,当多余4000字节时,会用lob来存储, ...
 - Oracle数据库字段类型说明
		
目前Oracle 数据库大概有26个字段类型,大体分为六类,分别是字符串类型.数字数据类型.日期时间数据类型.大型对象(LOB)数据类型.RAW和LONG RAW数据类型.ROWID和UROWID数据 ...
 
随机推荐
- 分布式开放消息系统RocketMQ的原理与实践(消息的顺序问题、重复问题、可靠消息/事务消息)
			
备注:1.如果您此前未接触过RocketMQ,请先阅读附录部分,以便了解RocketMQ的整体架构和相关术语2.文中的MQServer与Broker表示同一概念 分布式消息系统作为实现分布式系统可扩展 ...
 - java实验三——求平均数,数组排序(有关java保留小数位数,由于编译器版本未到1.5导致的报错format函数第二个参数不对,要求是Object[])
			
package hello; import java.util.Arrays; public class 实验三更正版 { public static void main(String[] args) ...
 - 学习笔记之Elasticsearch
			
Elasticsearch: RESTful, Distributed Search & Analytics | Elastic https://www.elastic.co/products ...
 - [转]预编译 ASP.NET 网站
			
转自:如何:预编译 ASP.NET 网站 Visual Studio 2005 预编译 ASP.NET 网站可缩短用户的初始响应时间,因为页在第一次被请求时无需编译.这对于经常更新的大型网站尤其有 ...
 - (转!)大话websocket
			
邪正看眼鼻,真假看嘴唇,功名看气概,富贵看精神. ---曾国藩<冰鉴> 转自https://www.cnblogs.com/fuqiang88/p/5956363.html 原文http: ...
 - js实现手机号身份证等加星(*)号
			
下面来为各位整理了一些关于js实现手机号身份证等加星(*)号代码了,在js不足时我们还补充了php实现手机号身份证等加星(*)号的函数,有兴趣的一起来看看. 有时候为了不让用户的手机号码和身份证号 ...
 - 不重启修改'log_slave_updates'变量
			
Variable 'log_slave_updates' is a read only variable 不重启修改mysql变量 执行复制的时候遇到的问题 mysql> show variab ...
 - Web API 源码剖析之默认消息处理程序链之路由分发器(HttpRoutingDispatcher)
			
Web API 源码剖析之默认消息处理程序链-->路由分发器(HttpRoutingDispatcher) 我们在上一节讲述了默认的DefaultServer(是一个类型为HttpServer的 ...
 - 使用V$SQL_PLAN视图获取曾经执行过的SQL语句执行计划
			
通常我们查看SQL语句的执行计划都是通过EXPLAIN PLAN或者AUTOTRACE来完成.但是这些查看方法有一个限制,它们都是人为触发而产生的,无法获得数据库系统中曾经执行过的SQL语句执行计划. ...
 - PHP mysqli_autocommit() 函数
			
定义和用法 mysqli_autocommit() 函数开启或关闭自动提交数据库修改. 提示:请查看 mysqli_commit() 函数,用于提交指定数据库连接的当前事务.请查看 mysqli_ro ...