- 转换函数:
分为隐式转换和显示转换两种。
隐式转换用于字符和数值互转,字符和日期互转
varchar2 or char --> number, varchar2 or char --> date
number --> varchar2, date-->varchar2
select * from emp where empno = to_number('8000');
select * from emp where hiredate = '20-2月-1981'
尽管数据类型之间可以进行隐式转换,但仍建议使用显示转换,以保持良好的设计风格
select '999'-10 from dual;//989
- to_char(date,'fmt')
格式元素 含义
YYYY,YY 代表四位,两位数字的年份
MM 用数组表示的月份
MON 月份的缩写,对中文月份表全称
用于将日期或时间戳转换成varchar2类型字符串,如果指定了格式字符串,则用它控制结果的结果。
格式字符串由格式元素构成。格式控制穿必须用单引号括起来。
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;
- to_char函数操作数字:to_char(num,format)
* 用于将number类型参数转换为varchar2类型,指定format控制转换。
控制符 含义
9 代表一位数字,如果该位没有数组则不显示,小数位强制显示
0 代表一位数字,如果该位没有数字则强制显示
$ 显示美元符号
L 显示本地货币符号
. 显示小数点
, 显示千分位符号
to_char(123.456789,'9999') //空格123;前面补齐空格,如果'999',结果为123
to_char(123.456789,'0000.00') //0123.46;前面补齐0,小数点后两个0表示截取两位小数,四舍五入。
to_char(123.456789,'$0000.00') //$0123.46
to_char(123.456789,'L0000.00') //¥0123.46
to_char(123.456789,'999,999,999') //123,456,789
- 显示转换:
to_char():当由数值或日期转成字符串时,必须要规定格式。
- to_number(string format):转成数字
将char或varchar2类型的string转换为number类型。
select to_number('$39343.783','$99990.000') from dual; $39343.783
select to_number('11.231','999.999') from dual; // 空格11.231
- to_date(string format):转成日期
将char或varchar2类型的string转换为date类型。
select to_date('04,05,19,10,23,44','yy,mm,dd,hh12,mi,ss');
select to_date('2022-05-28','yyyy-mm-dd') from dual;
- 单行函数嵌套:
单行函数可被嵌入任何曾。
嵌套函数从最深层到最低层求值。
--显示没有上级管理的公司首脑
select ename,nvl(to_char(mgr),'boss') from emp where mgr is null;
--显示员工雇佣期满6个月后下一个星期五的日期
select hiredate,next_day(add_months(hiredate,6),'星期五') from emp;
- 其他函数:decode ,case when(条件函数)
--给不同部门的人员涨薪,部门编号为10,涨薪10%,部门编号20,涨薪20%,部门编号30,涨薪30%
decode实现:
select ename,sal,deptno,decode(deptno,10,sal*1.1,20,sal*1.2,30,sal*1.3) from emp;
case when实现:
select ename,sal,deptno,case deptno when 10 then sal*1.1 when 20 then sal*1.2 when 30 then sal*1.3 end from emp;