Oracle:三大类型转换

本文介绍了Oracle数据库中的隐式和显式数据类型转换,包括varchar2/char到number、date的转换,以及TO_CHAR、TO_NUMBER、TO_DATE函数的详细用法,强调了转换过程中的合法性和合理性。

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

隐式数据类型转换

(1)varchar2变长/char定长——>number,例如:'123'——>123

(2)varchar2/char——>date,例如:'25-4月-15'——>'25-4月-15'

(3)number——>varchar2/char,例如:123——>'123'

(4)date——>varchar2/char,例如:'25-4月-15'——>'25-4月-15'

oracle如何隐式转换

  1. “=”号两边的类型是否相同
  2. 如果“=”号两边的类型不同,尝试的去做转换
  3. 在转换时,要确保合法合理,否则转换会失败,例如:12月不会有32天,一年中不会有13月

显式数据类型转换

TO_CHAR函数对日期的转换

格式:TO_CHAR(日期, '转换格式');

转换格式

year:y,表示年的最后一位;yy,表示年的最后2位;yyy,表示年的最后3位;yyyy,用4位数表示年。

month:mm,用2位数字表示月;mon,简写形式比如11月或者nov;month,全称比如11月或者november。

day:dd,表示当月第几天;ddd,表示当年第几天;dy,当周第几天,简写形式比如星期五或者fri;day,当周第几天,全写比如星期五或者friday。

hour:hh,2位数表示小时12小时;hh24,2位数表示小时24小时。

minute:mi,2位数表示分钟。

second:ss,2位数表示秒60进制。

季度:q,一位数表示季度(1 - 4)。

周:ww,用来表示当年第几周;w,用来表示当月第几周。

24小时制下的时间范围(00:00:00 - 23:59:59)

12小时制下的时间范围(1:00:00 - 12:59:59)

使用双引号向日期中添加字符

--显示如下格式:2015 年 04 月 25 日 星期六
select to_char(sysdate,'yyyy "年" mm "月" dd "日" day') from dual;

--显示如格式:2015-04-25今天是星期六 15:15:15
select to_char(sysdate,'yyyy-mm-dd"今天是"day hh24:mi:ss') from dual;
select to_char(sysdate,'yyyy-mm-dd"今天是"day HH12:MI:SS AM') from dual;

TO_CHAR 函数对数字的转换

格式:TO_CHAR(数值, '转换格式');

转换格式

9

数字,0到9中任意一个值

0

$

美元符

L

本地货币符号

.

小数点

,

千位符

--显示如下格式:$1,234
select to_char(1234,'$9,999') from dual;

--显示如下格式:¥1,234
select to_char(1234,'L9,999') from dual;

TO_NUMBER 函数将字符转换成数字

格式:
TO_NUMBER(varchar2|char);
TO_NUMBER(varchar2|char , '转换格式');
--将字符串‘123’转成数字123
select to_number('123') from dual;

TO_DATE 函数将字符转换成日期

格式:
TO_DATE(varchar2|char);
TO_DATE(varchar2|char , '转换格式');
--查询1980年12月17日入职的员工
select * from emp where hiredate = to_date('1980年12月17日','yyyy"年"mm"月"dd"日"');
select * from emp where hiredate = to_date('1980#12#17','yyyy"#"mm"#"dd');
select * from emp where hiredate = to_date('1980-12-17','yyyy-mm-dd');

注意

select '123' + 123 from dual; --246
select '123' || 123 from dual; --123123 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值