ORACLE数据库-转换函数

本文详细介绍了数据库中的转换函数,包括TO_CHAR、TO_NUMBER和TO_DATE的用法,涉及数值、日期的格式化转换。此外,还提及了字符型、数值型和日期型函数的基本概念和分类,为数据库操作提供了基础指导。

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

函数(转换函数)(因篇幅过多,所以先写转换函数,剩下的字符型函数,数值型函数,日期型函数,开窗函数,其他函数,可以看我的博客,因为都放一块太多了)

概念:按不同的功能用途而封装好的程序,不必花费大量的心思编写相应的程序,直接使用即可达到目的。

分类:

1.函数从定义角度来说分为“系统函数”与“用户自定义函数”:

系统函数即软件自带的,一些公认的或常用的函数,例如:聚合函数、UPPER、NVL等;

用户自定义函数是用户根据自身需要而自行创建的函数,例如随机点名。

前者在软件中通用,而后者每到一个新环境中都需要重新创立。

2.从作用对象角度来说分为

1)转换函数

2)字符型函数

3)数值型函数

4)日期型函数

5)开窗函数

6)其他函数

一,转换函数

作用范围:针对不同数据类型相互转化时使用,转化时可同时指定目标类型与格式。

转字符:TO_CHAR

转数值:TO_NUMBER

转日期:TO_DATE

1.TO_CHAR

1.1数值转字符

1)无指定格式,单纯由数值转字符

SELECT TO_CHAR(00123) FROM DUAL;  --数值会以最简形式显示

2)有指定格式:将数值转字符的同时,指定格式指定格式包括指定精度与指定货币

(1)指定精度

数值转字符中的通配符:通过0或9来代指该位内容

9:指任意数字,若整数位该位置无数字,则格式不生效,小数位该位置无数字以0补全

SELECT TO_CHAR(0001524.254,99999.9999) FROM DUAL;  1524.2540

SELECT TO_CHAR(0001524.254,99999.99) FROM DUAL;    1524.25  --精度不够会四舍五入

0:指任意数字,若整数位该位置无数字,则强制显示为0,小数位一般不用0代指

SELECT TO_CHAR(11.254,'0000.099') FROM DUAL;  0011.245

注意:

a.若指定格式,转换过程中易出现空格,所以常常会搭配去空格函数使用

SELECT TRIM(TO_CHAR(125.25,'9999.9')) FROM DUAL;

b.转换过程中若遇小数位精度过低的情况,则会遵循四舍五入,遇整数位精度过低的情况,则会显示为#

SELECT TO_CHAR(12.2,'9.99999') FROM DUAL;   //出现的#号为sum(9)+2

c.可添加千分符,

SELECT TO_CHAR(123456789.254,'999,999,999.999') FROM DUAL; --123,456,789.254

(2)指定货币

$:美元符号

SELECT TO_CHAR(123.36,'$999.99') FROM DUAL;  $123.36

SELECT TO_CHAR(123.25,'99$9.99') FROM DUAL;//$可任意放

L:当地货币

SELECT TO_CHAR(123.25,'L999.99') FROM DUAL;  ¥123.25

SELECT TO_CHAR(123.25,'99L9.99') FROM DUAL;  //ERROR, L不可任意放

1.2日期转字符

拓展:获取当前系统日期的方法

SELECT SYSDATE FROM DUAL; //SYSDATE:到秒

SELECT SYSTIMESTAMP FROM DUAL; // SYSTIMESTAMP:到毫秒

日期格式设计:

1.年

YYYY:四位的年份

SELECT TO_CHAR(SYSDATE,'YYYY') FROM DUAL; //返回当时年份

YYY,YY,Y:分别表示后三位、两位以及一位的年份

2.季度

Q:一年中第几个季度(一位)

SELECT TO_CHAR(SYSDATE,'Q') FROM DUAL;//返回当前季度

3.月份

MONTH:月的全称(右侧空格补齐九位)--英文 ,'NLS_DATE_LANGUAGE = AMERICAN'

SELECT TO_CHAR(SYSDATE,'MONTH') FROM DUAL; //7月

MON:三位字符的月份缩写--英文 ,'NLS_DATE_LANGUAGE = AMERICAN'

SELECT TO_CHAR(SYSDATE,'MON') FROM DUAL; //7月

MM:一年中的第几个月(两位)

SELECT TO_CHAR(SYSDATE,'MM') FROM DUAL; //当前所在月份

4.星期

星期:

WW:一年中的第几个星期,从第一天开始算起,一个七天算作一周,和星期几无关

SELECT TO_CHAR(SYSDATE,'WW') FROM DUAL;

IW:一年中的第几个星期,星期一为本周第一天,每年末最后一个周不足四天算至下年第一周,足四天将下年本周的剩余时间一同算作本年最后一周

W:一个月中的第几个星期,从第一天开始算起,一个七天算作一周,和星期几无关

DAY:星期几全称 (右侧空格补齐九位)--英文 ,'NLS_DATE_LANGUAGE = AMERICAN'

SELECT TO_CHAR(SYSDATE,'DAY') FROM DUAL;

DY:星期几的三位缩写 --英文 ,'NLS_DATE_LANGUAGE = AMERICAN'

SELECT TO_CHAR(SYSDATE,'DY' ,'NLS_DATE_LANGUAGE = AMERICAN') FROM DUAL;

5.天

D:星期中的第几天 --从星期日开始算第一天

SELECT TO_CHAR(SYSDATE,'D') FROM DUAL;

DD:月份中的第几天

SELECT TO_CHAR(SYSDATE,'DD') FROM DUAL;

DDD:年份中的第几天

SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;

6.时

HH,HH12:一天中的第几个小时(12小时制)

SELECT TO_CHAR(SYSDATE,'HH12') FROM DUAL;

HH24:一天中的第几个小时(24小时制)

SELECT TO_CHAR(SYSDATE,'HH24') FROM DUAL;

7.分

MI:一小时中的第几分钟

SELECT TO_CHAR(SYSDATE,'MI') FROM DUAL;

8.秒

SS:一分钟中的第几秒

SELECT TO_CHAR(SYSDATE,'SS') FROM DUAL;

SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS') FROM DUAL;--返回当前的年月日时分秒

9.毫秒

FF:毫秒(默认6位)

SELECT TO_CHAR(SYSTIMESTAMP,'FF') FROM DUAL;

FF3,FF6:FF后跟数字表示毫秒的显示位数

SELECT TO_CHAR(SYSTIMESTAMP,'FF3') FROM DUAL;

2.TO_NUMBER

2.1将只含数字的字符串转化为数值

SELECT TO_NUMBER('25445.21') FROM DUAL;--字符是向左靠的,而数值是向右靠的

2.2 去掉字符串中的特定符号并将剩下的数字转化为数值

特定符号包括:千分符和货币符号

1)去掉千分符

SELECT TO_NUMBER('123,456,789.25','999999999.99') FROM DUAL;   123456789.25

2)去掉货币符号

SELECT TO_NUMBER('$125','$999.99') FROM DUAL;   125

SELECT TO_NUMBER('¥123','L999.99') FROM DUAL;  123

3.TO_DATE

TO_DATE(字符串表示的日期,’与前者对应的日期格式’)

注意:

1.日期数据不同于字符和数值,日期数据存放的是有关该日期的所有数据,通过TO_CHAR指定不同的目标格式,可以转出不同的内容

2.出于上述原因及不同工具日期显示格式不同的原因,很多项目以字符型格式存储日期

SELECT TO_DATE('1998/01/01','YYYY/MM/DD') FROM DUAL;//字符转日期

(二,字符型函数

三,数值型函数

四,日期型函数

五,开窗函数

六,其他函数)   想了解更多的小伙伴可以看我别的博客,因为太多了,都放一块太影响阅读了,不过剩下的除了开窗函数会麻烦些,都很容易理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值