数值型
理解精度
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
结果:##。这是错误的结果
本文来自博客园,作者:NE_STOP,转载请注明原文链接:https://www.cnblogs.com/alineverstop/p/18004698