Oracle_SQL 基础之 类型转换

来源:互联网 发布:55度杯好用吗 知乎 编辑:程序博客网 时间:2024/05/18 02:20

Oracle有三种最基本的数据类型,即字符型、数字型、日期型。

Oracle 数据类型的隐式转换

现在在oracle数据库中建立一个user_info表,对应代码如下:

CREATE TABLE user_info(user_id NUMBER(2) PRIMARY KEY,user_name VARCHAR2(14),user_birthday DATE);

赋值操作

在赋值操作的情况下,我们有如下四种隐式类型转换的情况:

字符串转化为数字

select '12'+'8' from dual;-- 20 

字符串转化为日期

INSERT INTO USER_INFO        (user_id,user_name,user_birthday)       VALUES       (1,'Tom','26-1月-08');

数字类型转换为字符串

INSERT INTO USER_INFO        (user_id,user_name,user_birthday)       VALUES       (2,111,last_day('26-4月-08'));

说明:数字类型的111被转化为字符串插入到user_info表的user_name属性中去!

日期类型转化为字符串类型

INSERT INTO USER_INFO        (user_id,user_name,user_birthday)       VALUES       (3,sysdate,sysdate+1);

说明:代码中的sysdate被转化为字符串赋值到了user_name属性中!

表达式比较操作

在表达式的比较操作过程中,我们可以进行如下两种隐式转换操作:

字符串转化为数字

select 1+1 from dual where '2' > 1;-- 2

字符串转化为日期类型:

select 1+1 from dual where sysdate < '26-4月-19';-- 2

但是一般常用的还是类型的显式转换!

Oracle 数据类型的显式转换

首先,我们常用的显式类型转换的函数与如下三种:

to_char():转化为字符串类型
to_number():转化为数字类型
to_date():转化为日期类型

我们用如下的图来说明则三个函数的使用场景:

数据类型的显式转换

那么就从上图的四个场景来分别介绍相应的函数用法:

TO_CHAR() 函数:日期转化为字符串

TO_CHAR(date, ‘format_model’) ;

如上的format_model有如下格式:

日期格式化元素 意义 YYYY 4位数字表示的年份 YEAR 英文描述的年份 MM 2位数字表示的月份 MONTH 英文描述的月份 MON 三个字母的英文描述月份简称 DD 2位数字表示的日期 DAY 英文描述的星期几 DY 三个字母的英文描述的星期几简称 HH24:MI:SS AM 时分秒的格式化 DDspth 英文描述的月中第几天 fm 格式化关键字,可选

还是以上面的user_info数据库为例,我们看下面几个例子:

SELECT to_char(u.user_birthday, 'YYYY-MM-DD HH24:MI:SS AM')  FROM user_info u WHERE u.user_id = 3--查找结果:2017-07-20 19:25:19 下午

TO_CHAR() 函数:数字转化为字符串

TO_CHAR(number, ‘format_model’) ;

其中format_model有如下格式:

数字格式化元素 意义 9 表示一个数字 0 强制显示0 $ 放一个美元占位符 L 使用浮点本地币种符号 . 显示一个小数点占位符 , 显示一个千分位占位符

我们看下面几个例子的学习怎样使用这个函数:

alter session set NLS_CURRENCY = '¥';SELECT to_char(1245562, 'L99,999,999.00')  FROM dual;--查找结果:¥1,245,562.00
alter session set NLS_CURRENCY = '$';SELECT to_char(1245562, 'L99,999,999.00')  FROM dual;--查找结果:$1,245,562.00

TO_NUMBER() 函数:字符串转化为数字

TO_NUMBER(char[, ‘format_model’]) ;

最简单的应用就是:

SELECT to_number('4456')  FROM dual;--4456

当然可以干一些较为复杂的转换,看如下代码:

SELECT to_number('$4,456,455.000', '$9,999,999.999')  FROM dual;--查找结果:4456455

说明:以上面的语句为例:
我们的format_model要与待转化的数字对应好,且其位数不能小于它。
如上我们会发现$9,999,999.999$4,456,455.000是意义对应的。
也就是说上例中的format_model可以为:$999,999,999.999$9,999,999,999.999,但是不能为:$999,999.999或者$9,999.999等等。

TO_DATE()函数:字符串转化为日期

TO_DATE(char[, ‘format_model’])

较为常用的用法如下:

SELECT to_date('2011-02-22', 'YYYY-MM-DD')  FROM dual;--2011/2/22
原创粉丝点击