您的位置:首页 > 数据库 > Oracle

oracle三大类型(varchar2,number,date)转换

2017-03-07 11:52 543 查看
oracle中三大类型与隐式数据类型转换

(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月

 

【1】查询1980年12月17日入职的员工(方式一:日期隐示式转换)

select * from emp where hiredate = '17-12月-80';

【2】使用to_char(日期,'格"常量"式')函数将日期转成字符串,显示如下格式:2015 年 04 月 25 日 星期六

select to_char(sysdate,'yyyy" 年 "mm" 月 "dd" 日 "day') from dual;

【3】使用to_char(日期,'格式')函数将日期转成字符串,显示如格式: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;

【4】使用to_char(数值,'格式')函数将数值转成字符串,显示如下格式:$1,234

select to_char(1234,'$9,999') from dual;

【5】使用to_char(数值,'格式')函数将数值转成字符串,显示如下格式:¥1,234select to_char(1234,'$9,999') from dual;

select to_char(1234,'L9,999') from dual;

【6】使用to_date('字符串','格式')函数,查询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');

【7】使用to_number('字符串')函数将字符串‘123’转成数字123

select to_number('123') from dual;

注意:

select '123' + 123 from dual;246

select '123' || 123 from dual;123123

SQL数据类型

-----------------------------------

以表格形式说明:

 

字段类型     描述    

 bit      0或1的整型数字    

 int      从-2^31(-2,147,483,648)到2^31(2,147,483,647)的整型数字    

 smallint      从-2^15(-32,768)到2^15(32,767)的整型数字    

 tinyint      从0到255的整型数字    

           

 decimal      从-10^38到10^38-1的定精度与有效位数的数字    

 numeric      decimal的同义词    

           

 money      从-2^63(-922,337,203,685,477.5808)到2^63-1(922,337,203,685,477.5807)的货币数据,最小货币单位千分之十    

 smallmoney      从-214,748.3648到214,748.3647的货币数据,最小货币单位千分之十    

           

 float      从-1.79E+308到1.79E+308可变精度的数字    

 real      从-3.04E+38到3.04E+38可变精度的数字    

           

 datetime      从1753年1月1日到9999年12日31的日期和时间数据,最小时间单位为百分之三秒或3.33毫秒    

 smalldatetime      从1900年1月1日到2079年6月6日的日期和时间数据,最小时间单位为分钟    

           

 timestamp      时间戳,一个数据库宽度的唯一数字    

 uniqueidentifier      全球唯一标识符GUID    

           

 char      定长非Unicode的字符型数据,最大长度为8000    

 varchar      变长非Unicode的字符型数据,最大长度为8000    

 text      变长非Unicode的字符型数据,最大长度为2^31-1(2G)    

           

 nchar      定长Unicode的字符型数据,最大长度为8000    

 nvarchar      变长Unicode的字符型数据,最大长度为8000    

 ntext      变长Unicode的字符型数据,最大长度为2^31-1(2G)    

           

 binary      定长二进制数据,最大长度为8000    

 varbinary      变长二进制数据,最大长度为8000    

 image      变长二进制数据,最大长度为2^31-1(2G)

Oracle数据类型

-----------------------------------

VARCHAR2(size)   可变长度的字符串,其最大长度为size个字节;size的最大值是4000,而最小值是1;你必须指定一个VARCHAR2的size;   

NVARCHAR2(size)   可变长度的字符串,依据所选的国家字符集,其最大长度为size个字符或字节;size的最大值取决于储存每个字符所需的字节数,其上限为4000;你必须指定一个NVARCHAR2的

size;   

NUMBER(p,s)   精度为p并且数值范围为s的数值;精度p的范围从1到38;数值范围s的范围是从-84到127;

例如:NUMBER(5,2)   表示整数部分最大3位,小数部分为2位;

NUMBER(5,-2)   表示数的整数部分最大为7其中对整数的倒数2位为0,前面的取整。

NUMBER   表示使用默认值,即等同于NUMBER(5);   

LONG   可变长度的字符数据,其长度可达2G个字节;   

DATE   有效日期范围从公元前4712年1月1日到公元后4712年12月31日   

RAW(size)   长度为size字节的原始二进制数据,size的最大值为2000字节;你必须为RAW指定一个size;   

LONG   RAW   可变长度的原始二进制数据,其最长可达2G字节;   

CHAR(size)   固定长度的字符数据,其长度为size个字节;size的最大值是2000字节,而最小值和默认值是1;   

NCHAR(size)   也是固定长度。根据Unicode标准定义   

CLOB   一个字符大型对象,可容纳单字节的字符;不支持宽度不等的字符集;最大为4G字节   

NCLOB   一个字符大型对象,可容纳单字节的字符;不支持宽度不等的字符集;最大为4G字节;储存国家字符集   

BLOB   一个二进制大型对象;最大4G字节   

BFILE   包含一个大型二进制文件的定位器,其储存在数据库的外面;使得可以以字符流I/O访问存在数据库服务器上的外部LOB;最大大小为4G字节.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 oracle