[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; 
相关推荐
望获linux2 小时前
【Linux基础知识系列】第一百一十篇 - 使用Nmap进行网络安全扫描
java·linux·开发语言·前端·数据库·信息可视化·php
乘乘凉2 小时前
Python中函数的闭包和装饰器
前端·数据库·python
༒࿈༙྇洞察༙༙྇྇࿈༒5 小时前
PostgreSQL快速入门
数据库·postgresql
携欢5 小时前
Portswigger靶场之Visible error-based SQL injection通关秘籍
数据库·sql
-XWB-5 小时前
PostgreSQL诊断系列(4/6):表空间与膨胀分析——解决“越用越大”的存储难题
数据库·postgresql
幸福清风5 小时前
【SQL】深入理解MySQL存储过程:MySQL流程控制语句详解
数据库·sql·mysql
她说人狗殊途6 小时前
DDL DML DQL DCL 语句
数据库·oracle
**AE86**8 小时前
sed截取慢SQL大文件并导出指定时间范围内容
数据库·sql·sed
小清兔8 小时前
c#基础知识
开发语言·数据库·学习·unity·c#·游戏引擎·.net
天上掉下来个程小白9 小时前
微服务-25.网关登录校验-网关传递用户到微服务
java·数据库·微服务