Oracle_SQL 基础之 类型转换

前端之家收集整理的这篇文章主要介绍了Oracle_SQL 基础之 类型转换前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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_birthday) VALUES (2,111,last_day('26-4月-08'));

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

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

INSERT INTO USER_INFO (user_id,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,999.00') FROM dual;
--查找结果:$1,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') FROM dual;
--查找结果:4456455

说明:以上面的语句为例:
我们的format_model要与待转化的数字对应好,且其位数不能小于它。
如上我们会发现$9,999.999$4,455.000是意义对应的。
也就是说上例中的format_model可以为:$999,999.999$9,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

猜你在找的Oracle相关文章