oracle数据库--数据类型number(p,s)的使用详解

本文详细解析Oracle数据库中NUMBER数据类型的使用规则,包括有效数字的概念、精度(p)与刻度(s)的具体含义及其应用场景。并针对不同情况下的数值处理进行了深入探讨。

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

网上的解释大多千篇一律,自己总结了一些加上课上老师的说法,形成以下汇总内容,如有错误,欢迎指正。

首先预备知识,有效数字是指从左边第一个不是0的数字开始到精确的数字截止。p一般表示有效的位数,s一般表示精确到小数点后几位,其中p:1~38 s:-84~127。

具体情况下面讨论:

1 在s>=0时

精确到小数点后s位,并且在s位上四舍五入,必须保证整个数字的有效位<=p,否则出错,如果出现s>p的情况比如0.01234567 number(4,5)下数值为0.01235

2 在s<0时

与s>=0不一样   比如number(4,-2)是小数点对左边两位进行四舍五入,总共的最大位数是p+|s|=6位,这是必须的,只能比6位小,否则报错,也就是允许的最大值是999949,如果再多一个999950左边两位就会进位 变成七位数  这是不允许的。比如number(5,-2) 如果插入值12345678.9是错误的  因为小数点左边已经有8位 超过5+2=7位。正确实例:number(4,-2) 插入值899949 ,对49进行四舍五为00,为899900.。 比如:1234567    NUMBER(5,-2)   1234600   即使对67五入了也要随后置零

oracle数据库中的数值函数   对左边三个四舍五入round(7844,-3)=8000   直接截取左边三个trunc(7844,-3)=7000

定点数的精度(p)和刻度(s)遵循以下规则:
        当一个数的整数部分的长度 > p-s 时,Oracle就会报错
        当一个数的小数部分的长度 > s 时,Oracle就会舍入。
        当s(scale)为负数时,Oracle就对小数点左边的s个数字进行舍入。
        当s > p 时, p表示小数点后第s位向左最多可以有多少位数字,如果大于p则Oracle报错,小数点后s位向右的数字被舍入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值