Oracle中的数据类型——NUMBER

本文深入解析Oracle数据库中NUMBER数据类型的特性,包括其数值范围、精度与小数位数的定义,以及如何处理超出定义限制的情况。了解NUMBER类型如何在数据库中存储实际数据,及其在不同精度设置下的表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NUMBER类型概述

NUMBER类型可以用来存储0、正数、负数
数据范围是1×10-130 ~ 1 × 10126 ,不能等于或者大于1 × 10126 ,否则Oracle会报错(算数表达式的结果同理)

NUMBER类型的定义

NUMBER[(precision[, scale])]
precision —— 数据的有效位数(取值1~38)
scale —— 截取的小数点位(取值-84~127)
当精度超出定义的时候,两者都会做四舍五入操作
一个NUMBER类型的数据会占1~22个字节的数据

实际数据使用NUMBER类型在数据库中的存储

实际数据存储类型实际存储的值
123.89NUMBER123.89
123.89NUMBER(3)124
123.89NUMBER(5, 4)exceed precision1
123.89NUMBER(6, -2)100
3.8567NUMBER(5, 4)3.8567
3.85679NUMBER(5, 4)3.8568
3.8567NUMBER(6, -2)0

通过上面存储的值我们可以得出结论,当我们同时定义了数据有效位数和截取的小数点位的时候,数据库会按照要求处理数据最后判断数据是不是符合规则,符合规则直接存储,不符合规则的话则会报错


  1. NUMBER(5, 4)意为5位有效数字,小数点截取4位,123.89这个数字按照这个类型保存的数字是123.8900,有限数字已经有7位了,显然超出了定义的限制,故报错 ↩︎

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值