Oracle数据库转换函数之显式转化

本文深入解析SQL中TO_CHAR, TO_NUMBER, TO_DATE函数的使用方法与应用场景,详细介绍如何在数值、日期与字符串间进行高效转换,适用于数据库操作与数据处理的专业人士。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


显式转化


简单介绍TO_CHAR,TO_NUMBER,TO_DATE函数之间的联系与区别。
这三个函数之间的关系如下图所示:
在这里插入图片描述


TO_CHAR

T0_C ~~


TO_CHAR可以将数值格式、日期格式转化为字符串格式。

日期转字符串

日期格式有:
yyyy:完整年份(阿拉伯数字,1985)
mm:某月(阿拉伯数字,03)
dd:某天(阿拉伯数字,12)
year:年份(English,nineteen eighty-one)
month:完整月份(English,may)
mon:月份前三个字母
day:完整星期名称(tuesday)
dy:星期前三个字母(Tue)
HH24:MI:SS AM:(15:45:32 PM)
DD “of” MONTH:(12 of october)
DDSPTH:(fourteenth)

用法:to_char(hiredate,‘date_format’)
将日期按某格式输出,输出类型为字符串型
例:

select ename,to_char(hiredate,'yyyy-mm-dd day')    //将员工入职日期按‘年份-月份-日期 星期’格式输出
from emp                           //从员工信息表中查找
where ename='KING';                //指定只看‘KING’员工

ENAME      TO_CHAR(HIREDATE,'YYYY-M             //输出结果
---------- ------------------------
KING       1981-11-17 tuesday
数字转字符串

数字格式:
9 :代表一个数字,输出时以真实结果输出
0 :将整数部分空缺项填“0”,例如:5000>>>0005000
$: 放置一个浮动的美元符号
L :放置一个浮动的本地货币符号(计算机默认语言所属国的货币符号)
. :打印小数点"."
, :打印一个逗号作为千位标识符

用法:to_number(number,‘format_num’)
将数字按某格式输出,输出类型为字符串型

select                            //将年薪以$999,999,999.00的格式输出数字
to_char((12*sal+nvl(comm,0))/12,'$999,999,999.00')
from emp;
                          
TO_CHAR((12*SAL+                   //输出结果
----------------
         $800.00
       $1,625.00
       $1,291.67
       $2,975.00
       

TO_NUMBER

TO_N ~~


用法:to_number(‘char’,‘number_format’)
解释:char为字符串,比如“$9845217”
numer_format为说明前面字符串的 “数字格式” ,比如“$9999999"

可以理解为“char”为穿上衣服的一个数值,而TO_NUMBER可以将char穿的那身衣服拔下来。同样对于char来说也是有格式要求,详见数字转字符串一节中介绍的数字格式。

举例:

SQL> select to_number('$45612378','$99999999') from dual;      //执行该句

TO_NUMBER('$45612378','$99999999')                     //结果见下方
----------------------------------
                          45612378
           
SQL> select to_number('$4561,2378','$9999,9999') from dual;     //又如

TO_NUMBER('$4561,2378','$9999,9999')                   //执行结果
------------------------------------
                            45612378               

TO_DATE

TO_D ~~


用法:to_date(‘char’,‘date_format’)
解释:char为日期,比如“1987-03-24”
date_format为说明前面字符串的 “日期格式” ,比如“yyyy-mm-dd"

理解方式同TO_NUMBER,“char” 中内容为日期按照特定形式组成的字符串。
date_format说明前方字符串是什么格式

SQL> select to_date('1987-03-24','yyyy-mm-dd') from dual;     //说明1987-03-24字符串是日期,其格式为'yyyy-mm-dd'

TO_DATE('                                                  //结果为转换为日期(数据库默认可是,修改格式后其显示的格式不同)
---------
24-MAR-87


SQL> alter session set nls_date_format='yyyy-mm-dd day';     //修改日期显示格式
Session altered.

SQL> select to_date('1987-03-24','yyyy-mm-dd') from dual;    //重新执行上一步的命令

TO_DATE('1987-03-24'                              //结果显示与上次不同,显示结果跟当前设置的日期格式有关系
--------------------
1987-03-24 tuesday
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值