orcale中的to_number方法使用
TO_NUMBER函数()是Oracle中常用的类型转换函数之一,主要是将字符串转换为数值型的格式,与TO_CHAR()函数的作用正好相反。
To_number函数的格式如下:
To_number(varchar2 or char,'format model')
To_number函数中也有很多预定义的固定格式:
格式值 | 含义 |
---|---|
9 | 代表一个数字 |
0 | 强迫0显示 |
$ | 显示美元符号 |
L | 强制显示一个当地的货币符号 |
. | 显示一个小数点 |
, | 显示一个千位分隔符号 |
TO_NUMBER用法 将一个字符串转成数值
格式:TO_NUMBER(string,format) 即 TO_NUMBER(字符串,格式)
在“转换函数:TO_CHAR()用法之一 将一个数值转化成字符串 ”一文中 TO_CHAR 函数所用格式,都适合本函数。
例:
TO_NUMBER('123.45')
结果
123.45
TO_NUMBER('$123,456.78','$999,999.99')
结果
123,456.78
Oracle中to_number()函数的学习
1、
Converts a string to the NUMBER data type(将字符串转换为数字数据类型) TO_NUMBER(<value>[, <format>, <NLS parameter>]) RETURN NUMBER select to_number('00001228') from dual;--to_number('00001228') 1228 select trunc(to_number('123.123'),2) from dual;
结果为:123.12
2、
Converts a HEX number to FLOAT(转换一个十六进制数的浮标) TO_NUMBER(<value>, <format>); SELECT TO_NUMBER('0A', 'XX') FROM dual;
结果为:10
3、
Converts a HEX number to DECIMAL(一个十六进制数转换为十进制) TO_NUMBER(<binary_float | binary_double | number>, '<hex mask>') RETURN <binary_float | binary_double | number>; SELECT TO_NUMBER(100000,'XXXXXXXX') FROM dual;
结果为:1048576
4、
--to_number(expr) --to_number(expr,format) --to_number(expr,format,'nls-param') select to_number('0123')number1, --converts a string to number trunc(to_number('0123.123'),2) number2, to_number('120.11','999.99') number3, to_number('0a','xx') number4, --converts a hex number to decimal to_number(100000,'xxxxxx') number5 from dual;
补充:oracle中to_number字符串转数字、max取最大值、dbms_random.value生成随机数及对小数做截取,四舍五入操作的函数
oracle中to_number、max、dbms_random.value、trunc、round函数的用法及生成随机整数的实现方式。
1、 to_number函数很简单,就是把字符类型转换成数字类型。
select to_number('123.8') from dual;
select to_number('123') from dual
2、max函数很简单,从结果集中取出最大值。下图为基础数据。在此基础上应用max函数。
3、dbms_random.value(a,b)函数可生成随机浮点数。
a指下限,b指上限,将会生成下限到上限之间的数字,但不包含上限,即生成的小数在[a,b)区间。
4、trunc(3.141592,4)保留小数到小数点后4位,不做四舍五入操作。
若第二个参数不传,默认保留整数。
5、round(3.141592,4)四舍五入到小数点后4位。
同样,若第二个参数不传,默认四舍五入到整数。
6、随机生成[1,7]之间的整数, dbms_random.value结合round或者trunc实现。
但是用select round(dbms_random.value(1,7)) from dual随机生成[1,7]之间的随机数是不科学的
以随机生成[1,4]之间的随机数为例,若是这么写select round(dbms_random.value(1,4)) from dual
当dbms_random.value(1,4)生成的随机数在1~1.5之间时round(dbms_random.value(1,4))值为1
当dbms_random.value(1,4)生成的随机数在1.5~2.5之间时round(dbms_random.value(1,4))值为2
当dbms_random.value(1,4)生成的随机数在2.5~3.5之间时round(dbms_random.value(1,4))值为3
当dbms_random.value(1,4)生成的随机数在3.5~4之间时round(dbms_random.value(1,4))值为4
可见生成1和4的概率为1/6,生成2和3的概率为2/6,所以也就谈不上随机生成了。
可改成select round(dbms_random.value(0.5,4.5)) from dual,这样生成每一个数的概率就相同了。
用round和trunc函数结合dbms_random.value生成随机数时一定注意这一点。
建议这种情况直接用trunc,简单粗暴。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
相关文章
ORA-01578、ORA-01110:数据块被损坏,此时无法读取文件问题修复方案
这篇文章主要给大家介绍了关于ORA-01578、ORA-01110:数据块被损坏,此时无法读取文件问题的修复方案,文中通过示例代码介绍的非常详细,对大家学习或者使用数据库具有一定的参考学习价值,需要的朋友可以参考下2024-03-03oracle数据库删除数据Delete语句和Truncate语句的使用比较
oracle当表中的数据不需要时,则应该删除该数据并释放所占用的空间,删除表中的数据可以使用Delete语句或者Truncate语句,下面分别介绍2012-09-09Oracle 解决ORA-00257 Archiver error 报错问题解决
订单投资交易环境进行 impdb 数据泵恢复数据,执行到一半,报错终止,归档策略保留时间较长,或归档频率过高,导致数据库挂载盘符空间不足,本文给大家分享Oracle 解决ORA-00257 Archiver error 报错问题解决,感兴趣的朋友一起看看吧2023-12-12oracle11g管理员密码忘记怎么办 sqlplus解决忘记密码问题
oracle11g管理员密码忘记了怎么办?这篇文章主要介绍了oracle 11g管理员密码忘记问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-06-06
最新评论