共计 3144 个字符,预计需要花费 8 分钟才能阅读完成。
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 字节.
: