使用转换函数和条件表达式

数据类型转换包括:
隐式类型转换-在后台转换,与默认格式匹配。
从varchar或varchar2转换为number或者date格式。或者上述两种类型互相转换。
和显式数据类型转换
在这里插入图片描述

上面图片是数据格式互相转换的过程方法。

to_char函数对日期的转换
数据库默认的日期格式为dd-mm-rr,可以通过to_char函数转换
to_char(date,‘format_model’)
格式:必须在单引号中;大小写敏感;可以包含任意有效的日期格式;可以使用fm去掉多与的前导0;与日期值用逗号隔开。

to_date函数将字符串转化为日期
to_date(char[,‘format_model’])

to_number函数将字符转化为数字格式
to_number(char[,‘format_model’])
字符函数中的标点和引号必须与格式模型的相应部分完全匹配(大写除外);
字符参数不能有额外的空格;
字符参数中的数字数据必须与格式模型中的相应元素具有相同的位数,
如果没有前导0,字符参数中的数字可以省略前导0.

嵌套函数的执行顺序是由内到外,从最里层到最外层。可以嵌套到任意层级。

nvl:转换null值为实际的值。
nvl(comm,0)将控制转换为0.
nvl2:如果表达式1不是null,那么转换为表达式2;如果表达式1是null,则转换为表达式3.
nvl2(expr1,expr2,expr3)
nullif:比较两个表达式,如果相等,返回null;如果不相等,则返回第一个表达式。
nullif函数比较两个表达式返回null,如果不相等,返回第一个表达式,第一个表达式不能为null。
coalesce:返回表达式第一个非空表达式。
coalesce与nvl相比的有点在于coalsce可以同时交替多个值。如果第一个表达式非空,则返回表达式,对参数进行coalesce。

条件表达式(if-then-else)-case和decode
case:

SQL> select ename , job , sal ,
  2  case job WHEN 'CLERK' then 1.10*sal
  3  when 'SALESMAN' then 1.15*sal
  4   when 'PRESIDENT' then 1.20*sal
  5  when 'MANAGER' then 1.25*sal
  6  when 'ANALYST' then 1.30*sal             
  7  else sal END "REVISED_SALARY"
  8  from emp;

ENAME      JOB              SAL REVISED_SALARY
---------- --------- ---------- --------------
SMITH      CLERK            800            880
ALLEN      SALESMAN        1600           1840
WARD       SALESMAN        1250         1437.5
JONES      MANAGER         2975        3718.75
MARTIN     SALESMAN        1250         1437.5
BLAKE      MANAGER         2850         3562.5
CLARK      MANAGER         2450         3062.5
SCOTT      ANALYST         3000           3900
KING       PRESIDENT       5000           6000
TURNER     SALESMAN        1500           1725
ADAMS      CLERK           1100           1210

ENAME      JOB              SAL REVISED_SALARY
---------- --------- ---------- --------------
JAMES      CLERK            950           1045
FORD       ANALYST         3000           3900
MILLER     CLERK           1300           1430

14 rows selected.

decode:

SQL> select ename , sal , job ,
  2  decode (job , 'CLERK', 1.10*sal,
  3  'SALESAN', 1.15*sal,
  4  'PRESIDENT', 1.2*sal,
  5  'MANAGER', 1.25*sal,
  6  'ANALYST', 1.3*sal,
  7  sal)
  8  REVISED_SALARY
  9  from emp;

ENAME             SAL JOB       REVISED_SALARY
---------- ---------- --------- --------------
SMITH             800 CLERK                880
ALLEN            1600 SALESMAN            1600
WARD             1250 SALESMAN            1250
JONES            2975 MANAGER          3718.75
MARTIN           1250 SALESMAN            1250
BLAKE            2850 MANAGER           3562.5
CLARK            2450 MANAGER           3062.5
SCOTT            3000 ANALYST             3900
KING             5000 PRESIDENT           6000
TURNER           1500 SALESMAN            1500
ADAMS            1100 CLERK               1210

ENAME             SAL JOB       REVISED_SALARY
---------- ---------- --------- --------------
JAMES             950 CLERK               1045
FORD             3000 ANALYST             3900
MILLER           1300 CLERK               1430

14 rows selected.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值