暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

【每日一练 006】SQL : 单行函数(三)

原创 李美静 2020-06-23
1406

1 转换简述

数据可以从一种数据类型转换为其他数据类型。
image.png

2 转换类型

隐式转换:implicit data type conversion
由Oracle Server自动完成将一个数据转换为其它数据类型。
显式转换:explicit data type conversion
用户通过函数,显示地转换数据类型。
当然以上在转换过程中也要遵循转换规则。
尽管可以通过隐式转换将数据转换为另一种类型,但是推荐使用显示转换。

2.1 隐式转换

字符类型 varchar或char类型可以隐式的转换为数值或日期类型。
注意:只有当字符是有效的数值时,char才能成功转换为数值。
数值可以隐式转换为字符,日期可以隐式转换为字符。

2.2 显式转换

sql提供了三种函数将一种类型数据转换为另一种类型数据。

3 转换函数

3.1 to_char

to_char(date[,‘format_model’]) 这个格式模型必须使用单引号引起来,大小写敏感,可以包含任何有效的日期格式,fm消除填充空格或抑制前导零,与日期值之间用逗号分隔。
to_char将一个日期转换为format_model指定的字符类型,format_model指定了字符存储的日期格式。例如日期格式模型字符串‘11-Nov-2000’是’DD-Mon-YYYY’。可以使用to_char函数将一个日期以指定的格式输出。
如:输出Higgins的员工号,入职日期,且入职日期以MM/YY格式输出。

SELECT employee_id, TO_CHAR(hire_date, 'MM/YY') Month_Hired
FROM   employees
WHERE  last_name = 'Higgins';

格式模型的元素:
显示时间的格式:HH24:MI:SS AM :比如 15:45:32 PM
增加个性化说明的字符串使用双引号引起来:DD “of” MONTH:比如 12 of OCTOBER
数字后缀拼出数字:ddspth: 比如 fourteenth
如:

SELECT last_name,TO_CHAR(hire_date, 'fmDD Month YYYY') AS HIREDATE 
FROM   employees;

这个SQL语句显示了所有员工的姓名和入职日期。入职日期心类似于17 June 2003这样的格式显示。

SELECT  last_name,
	TO_CHAR(hire_date, 'fmDdspth "of" Month YYYY fmHH:MI:SS AM')
	HIREDATE
FROM    employees;

以上将入职日期以类似于“Seventeenth of June 2003 12:00:00 AM.”的格式输出。

TO_CHAR(number[, ‘format_model’])
将一个数值以字符格式输出,并且按照format model的格式显示。
格式元素:
9:代表一个数字
0:强制显示0
$:放置浮动美元符号
L:使用浮动本地货币符号
.:打印小数点
,:打印逗号作为千位指示符
如:以如下整数位长度最长为5位的格式,且显示千位分隔符逗号及小数分隔符’.’,输出员工的工资

SELECT TO_CHAR(salary, '$99,999.00') SALARY
FROM   employees
WHERE  last_name = 'Ernst';

Oracle服务器显示一串数字符号(#)来代替一个整数,这个整数的位数超过了格式模型中提供的位数

3.2 to_number

将一个字符串转换为数值格式输出。
TO_NUMBER(char[, ‘format_model’])

3.3 TO_DATE

将一个字符串转换为日期格式输出。
TO_DATE(char[, ‘format_model’])

如:

SELECT last_name, TO_CHAR(hire_date, 'DD-Mon-YYYY')
FROM  employees
WHERE hire_date < TO_DATE('01-Jan-90','DD-Mon-RR');

SELECT last_name, TO_CHAR(hire_date, 'DD-Mon-yyyy')
FROM   employees
WHERE  TO_DATE(hire_date, 'DD-Mon-yy') < '01-Jan-90';

以上想要列出1990年之前入职的员工,第一个SQL以RR格式匹配的可以得到正确的结果,当年是21世纪,因为RR日期的规则,01-Jan-90是1990年,而yy格式DD-Mon-yy是2090年。

4 练习题

判断题:
TO_NUMBER函数可以将字符或日期类型的数据以一定格式转换为数值。
A 对
B 错

【答题小贴士】:
1、以墨天轮文章的形式解析题目并给出答案
2、将墨天轮文章链接发送到此文的评论区

最后修改时间:2020-06-23 08:53:12
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论