转换函数
字符串、数值和日期三类数据之间是可以实现转换的。
No. |
函数名 |
含义 |
1 |
字符串 to_char(列 | 日期,格式) |
将日期或数字按格式转为字符串 |
2 |
日期 to_date(列 | 字符串,格式) |
将字符串按格式转为日期 |
3 |
数字 to_number(列 | 字符串) |
将字符串转为数字 |
to_char()
一、日期变为字符串,必须指定转换的格式。
日期:年yyyy月mm日dd
时间:时hh hh24分mi秒ss
数字:任意数字9,货币L
示例1:将日期显示格式化。
select to_char(sysdate,'yyyy-mm-dd') from dual; select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; |
示例2:查询所有在4月份雇佣的雇员。
select * from emp where to_char(hiredate,'mm')='04'; select * from emp where to_char(hiredate,'mm')=4; --自动转型 |
示例3:将数字格式化显示,使用货币格式化显示。
select to_char('4758475847583','9,9999,9999,9999') from dual; select to_char('4758475847583','L9,999,999,999,999') from dual; |
二、将字符串变为日期
示例4:将指定字符串按照格式转化为日期
select to_date('2017-11-21','yyyy-mm-dd') from dual; |
三、将字符串转化为数字。
示例5:to_number()演示。
select to_number('12')+to_number('1') from dual; select '12'+'1' from dual; |
题目1:date char number之间经常进行转换,请描述下列SQL语句。
select to_date('2017-07-14','yyyy-MM-dd') from dual; select to_date('2017-07-14','yyyy-MM-dd') as one_day from dual; select to_char(sysdate,'yyyy-MM-dd') as today from dual; select to_timestamp('2017-07-14 20:42:32.11','yyyy-MM-dd hh24:mi:ss:ff') as one_day from dual; select to_char(systimestamp,'yyyy-MM-dd hh24:mi:ss:ff') as today from dual; to_char(sysdate,'yyyy-MM-dd') select to_number(replace(to_char(sysdate,'yyyy-MM-dd'),'-')) from dual; select to_number(replace(to_char(sysdate,'yyyy-MM-dd'),'-')) as one_number from dual; |
其他函数
有以下函数不便进行分类,开发之中会经常使用:
No. |
函数名 |
含义 |
1 |
数字 nvl (列 | null, 默认值) |
空值置换。如果传入的数据时null,则使用默认值,如果不是null,则使用原始数据。 |
2 |
数据类型 decode(列 | 字符串 | 数值,比较内容1,显示内容1, 比较内容2,显示内容2,…[,默认显示内容]) |
条件取值。设置的内容会与每一个比较内容进行比较,如果内容相同,则使用显示内容进行输出,如果都不行同,使用默认内容输出。 |
示例1:查询emp表所有雇员的雇员编号,姓名,薪资,佣金,年薪。
select empno,ename,sal,comm,(sal+nvl(comm,0))*12 from emp; |
null与所有数据计算后还是null
示例2:将emp表中的职位(办事员、经理)置换为中文。
select empno,ename,job,decode(job,'CLERK','办事员','MANAGER','经理') from emp; |