[Oracle] TO_NUMBER()函数

TO_NUMBER()函数是Oracle中常用的类型转换函数,是将一些处理过的按一定格式编排过的字符串变回数值型的格式

常用于将文本文件或用户输入中的数字字符串转换为可计算的数值以及处理带有货币符号、千位分隔符等格式的数值字符串

语法结构

sql 复制代码
TO_NUMBER(converted_str, format, nls_parameters)

参数说明

converted_str:要转换为数字的字符串

format:指定字符串中的格式 (可选)

nls_parameters:指定国家语言支持参数,如小数点和千位分隔符 (可选)

format参数常用预定义的的固定格式

|---------|------------|
| 格式值 | 含义 |
| 9 | 代表一个数字 |
| $ | 显示美元符号 |
| . | 显示一个小数点 |
| D | 显示一个小数点 |
| , | 显示一个千位分隔符号 |
| G | 显示一个千位分隔符号 |

示例

sql 复制代码
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
sql 复制代码
-- 报错
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数据库当前日期的年、月、日、时、分、秒

sql 复制代码
-- 年
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; 
相关推荐
码明3 小时前
42.MySQL视图
数据库·oracle
耳东哇4 小时前
阿里云百炼平台创建智能体-上传文档
数据库·redis·阿里云
ykuaile_h86 小时前
MySQL梳理三:查询与优化
数据库·mysql
掘根6 小时前
【Redis】string字符串
数据结构·数据库·redis
春天的菠菜8 小时前
【mysql】设置mysql数据库只读权限用户
数据库·oracle
找不到、了8 小时前
Mysql使用Canal服务同步数据->ElasticSearch
数据库·mysql·elasticsearch
宋大水9 小时前
【大作业-12】草莓成熟度检测模型,YOLO+PyQt+MySQL
数据库·深度学习·mysql·yolo·目标检测·pyqt·课程设计
赵_|大人10 小时前
Qt 自动无法加载数据库为空
开发语言·数据库·qt
2501_9200470310 小时前
Mysql-事务
数据库·mysql·oracle