1. 程式人生 > >Oracle轉換函式

Oracle轉換函式



--自動型別轉換
select 1+'1' from dual;

--前面是字串,會自動轉換成date型別
select add_months('1-7月-2017',2) from dual;

--to_number   to_char   to_date
select sysdate from dual;
--把日期函式轉換成字串:to_char()
select sysdate,to_char(sysdate) from dual;

--自己定義日期的格式
select sysdate,to_char(sysdate,'YYYY-MM-DD HH24:MI:ss') from dual;
select sysdate,to_char(sysdate,'YYYY-MM-DD') from dual;
select sysdate,to_char(sysdate,'HH24:MI:ss') from dual;

--將數字轉換成字串:to_char
select 123,to_char(123) from dual;
--9代表佔位符,如果位數少於前面的數字,都會顯示#
--L代表本地貨幣符號
select 123,to_char(123,'999') from dual;

--to_date 將字串轉換成日期型別
select months_between(sysdate,'2017-12-17') from dual;
--to_date() 必須要指定日期的格式
select months_between(sysdate,to_date('2017-12-17','YYYY-MM-DD')) from dual;


--to_number 將字串轉數字  字串必須只有數字
select '123',to_number('123.000') from dual;

--nvl相當於java中的條件運算子      a?b:c
--查詢所有員工的姓名,職位,薪水,提成和總工資
select ename,job,sal,comm,sal+comm income from emp;
select ename,job,sal,nvl(comm,o) comm,sal+nvl(comm,0) income from emp;

--nvl2:有三個引數,第一個引數為null,返回第三個引數的值,否則返回第二個
select ename,job,sal,comm,nvl2(comm,sal+comm,sal) income from emp;
--兩者資料型別一定要一致
select comm,nvl(comm,'無') from;  --如果資料型別不一致,將出現報錯現象。

--decode 功能類似 switch...case...
--查詢所有員工的職位,並且以中文顯示
select distinct job from emp;
select decode(job,'CLERK','職員','SALESMAN','銷售員','PRESIDENT','不知道',
'MANAGER','經理','ANALYST','分析師') as job   from emp;