Oracle中数值型及处理方法

数值型

理解精度

number类型的精度表示可以标识数据精确度的位数。对于数字13245.977,当精确到小数点后2位,数据为12345.98,此时精度为7。而当精确到小数点前2位,数据为12300,此时精度为3,因为有3个数字对数据的准确度作出贡献

精度与小数位数

number类型中。小数位数可正可负,当为负数时,表示将数字精确到小数点之前的位数,当小数位数为0时,表示将数字精确到正数

指定number类型的列或变量时,小数位数不能超过精度

number(5,2)表示,精度为5,精确到小数点后2位

数值处理

返回数字的绝对值-abs()

select abs(-12.45) from dual

结果:21.45

四舍五入-round()

select round(4.37,1) result from dual

结果:4.4

select round(456.37,-1) result from dual

结果:460

select round(456.37) result from dual

结果:456

当小数位数为0或省略时,表示精确到整数

向上取整-ceil()

ceil()返回大于等于数值型参数的最小整数

想下取整-floor()

floor()返回小于等于参数的最大整数

取模操作-mod()

mod()返回一个除法表达式的余数

mod(被除数,除数)

select mod(5,2) result from dual

结果;1

在mod()中,被除数可以是0

select mod(5,0) result from dual

结果:5

返回数字的正负性-sign()

当参数大于0,返回1,当参数小于0,返回-1,当参数为0返回0

返回数字平方根-sqrt()

参数不能小于0

乘方运算-power()

select power(4,3) result from dual

结果64.4是底数,3是指数

截取数字–trunc()

trunc()截取时不进行四舍五入,而是直接舍去

select trunc(3.789,2) result from dual

结果:3.78

将ASCII码转换为字符-chr()

select chr(65) result from dual

结果:A

应用:向数据表中插入不宜直接输入的字符。在Oracle中,‘&’用来进行变量引用,当插入含有改符号时,Oracle可能会将其解释为变量引用

insert into test_char(f_char) values('&id=1');

此时pl/sql给出提示窗口,要求输入变量的值。处理该问题时,首先将其defin选项关闭,再执行插入

set define off
insert into test_char(f_char) values('&id=1');

格式化数值-to_char()

格式字符‘0’

0代表一个数字位,当原数值没有数字位与之匹配时,强制添加0

select to_char(12.78,'000.000') result from dual

结果:012.780

格式字符‘9’

9代表一个数字位,当原数值的整数部分没有数字位与之匹配,不填充任何字符

select to_char(12.78,'999.999') result from dual

结果:12.780

select to_char(0.78,'999.999') result from dual

结果:.780

对于小于1的小数来说,格式参数的个位使用‘0’更好

select to_char(0.78,'990.999') result from dual

结果:0.780

格式字符‘,’
select to_char(4560000,'99,999,990.00') result from dual

结果:4,560,990,00

格式字符‘FM’
select to_char(12.78,'FM000.000') result from dual

结果:012.780

select to_char(12.78,'FM999.999') result from dual

结果:12.78

FM格式符的意义在于屏蔽所有不必要的空格和0

格式字符‘$’
select to_char(12.78,'$999.999') result from dual

结果:$12.780

$可以出现在任何位置,而不必出现在开头

select to_char(12.78,'999.9$99') result from dual

结果:$12.780

如果‘FM’和‘$’均出现在格式参数中,则FM必须出现在开头,否则报错

select to_char(12.78,'FM$999.999') result from dual

结果:$12.78

格式字符‘L’

L是指定指定本地化货币的标识

select to_char(12.78,'FML999.999') result from dual

结果:¥12.78

格式字符‘C’

C返回与数据库系统环境相关的货币种类符号

select to_char(12.78,'FM999.999C') result from dual

结果:12.78CNY

CNY代表国际标准的人民币货币种类符号

十进制转十六进制

注意:‘x’的位数不能小于实际十六进制数的位数

select to_char(255,'xxx') from dual

结果:ff

select to_char(255,'x') from dual

结果:##。这是错误的结果

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值