数据类型转换包括:
隐式类型转换-在后台转换,与默认格式匹配。
从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.