TO_NUMBER()函数是Oracle中常用的类型转换函数,是将一些处理过的按一定格式编排过的字符串变回数值型的格式
常用于将文本文件或用户输入中的数字字符串转换为可计算的数值以及处理带有货币符号、千位分隔符等格式的数值字符串
语法结构
TO_NUMBER(converted_str, format, nls_parameters)
参数说明
converted_str:要转换为数字的字符串
format:指定字符串中的格式 (可选)
nls_parameters:指定国家语言支持参数,如小数点和千位分隔符 (可选)
format参数常用预定义的的固定格式
格式值 | 含义 |
9 | 代表一个数字 |
$ | 显示美元符号 |
. | 显示一个小数点 |
D | 显示一个小数点 |
, | 显示一个千位分隔符号 |
G | 显示一个千位分隔符号 |
示例
SELECT TO_NUMBER('1234.56') FROM dual; -- 1234.56
SELECT TO_NUMBER('$1,234.56', '$9,999.99') FROM dual; -- 1234.56
-- 1234.56 (将逗号识别为小数点,点识别为千位分隔符)
SELECT TO_NUMBER('1.234,56', '9G999D99', 'NLS_NUMERIC_CHARACTERS='',.''')
FROM dual;
-- 进制转换:16进制转换为10进制
SELECT TO_NUMBER('f','xx') FROM dual; -- 15
SELECT TO_NUMBER('19f','xxx') FROM dual; -- 415
-- 报错
SELECT TO_NUMBER('$12345.678', '$99999.99') FROM dual;
-- 12345.678
SELECT TO_NUMBER('$12345.678', '$99999.999') FROM dual;
提示Tips
1.format参数可以使用 D(小数点)、G(千位分隔符)、$(货币符号)等格式元素
2.需要注意的是,被转换的字符串必须符合数值类型的格式,如果被转换的字符串不符合数值型格式,Oracle将抛出错误提示
TO_NUMBER()函数获取Oracle数据库当前日期的年、月、日、时、分、秒
-- 年
SELECT TO_NUMBER(TO_CHAR(sysdate,'yyyy')) FROM dual;
-- 月
SELECT TO_NUMBER(TO_CHAR(sysdate,'mm')) FROM dual;
-- 日
SELECT TO_NUMBER(TO_CHAR(sysdate,'dd')) FROM dual;
-- 时(24小时制)
SELECT TO_NUMBER(TO_CHAR(sysdate,'hh24')) FROM dual;
-- 分
SELECT TO_NUMBER(TO_CHAR(sysdate,'mi')) FROM dual;
-- 秒
SELECT TO_NUMBER(TO_CHAR(sysdate,'ss')) FROM dual;