Oracle数据类型转换详解(显⽰+隐式)⽂章⽬录
1 概述
2 显式转换
oracle 时间转换2.1 to_char
功能:将'数值类型'或'⽇期类型'转为'字符类型'
返回值类型:varchar2
特别的:to_char(date,'FM99999990.00')
其9代表:如果存在数字则显⽰数字,不存在则显⽰'空格'
其0代表:如果存在数字则显⽰数字,不存在则显⽰0,即'占位符'
其 FM 代表:格式化数据(会删除因9带来的空格)
⽰例:
select to_char(12.34) c1,-- '12.34'
to_char(12.34,'FM99999.0900') fm1,-- 12.3400
to_char(12.34,'FM00099.0900') fm2,-- 00012.3400
to_char(0.34,'FM99999.0900') fm3,-- .3400 (常犯的错误)
to_char(0.34,'FM99990.0900') fm4,-- 0.3400
to_char(sysdate,'YYYY-MM-DD hh24:mi:ss') d1 -- 当前时间
from dual;
2.2 to_date
功能:将'字符型'转为'⽇期型'
返回值类型:date
select to_date('2020-11-11 11:11:11','YYYY-MM-DD hh24:mi:ss') d1
from dual;
2.3 to_number
功能:将'字符型'转为'数值'
返回值类型:number
select to_number('12.34') n1 -- 12.34
from dual;
3 隐式转换
select('1'||1)字符型,-- 11
('1'+1)数值型-- 2
from dual;
特别的:
1.对于insert、update操作,隐式转化为'字段的数据类型' -- 也很好理解:表字段类型已固定,若⽆转换,则直接报错若 id 列为 number 类型-- varchar2 同理 to_char(1) update t set id ='1'
=>update t set id = to_number('1')
insert into t(id)values('1')
=>insert into t(id)values(to_number('1'))
2.对于select操作
若 id 列为 number 类型
select*from t where id ='1'
=>select*from t where id = to_number('1')
若 id 列为 varchar2 类型-- 重点(索引失效 => 函数索引)select*from t where id =1
=>select*from t where to_number(id)=1;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。