1. 程式人生 > >《Oracle總結 02》--基本語法的應用

《Oracle總結 02》--基本語法的應用

1:查詢emp表中資料,列出兩列,內容為名字與職位, 顯示格式:ename:job;
  SELECT * FROM emp_xiangyoulu;
  SELECT ENAME,CONCAT(':',JOB) FROM emp_xiangyoulu; 
  
2:檢視每個員工職位名稱的字元個數
SELECT ENAME,job,LENGTH(job) FROM emp_xiangyoulu;

3:將所有員工的名字以小寫形式,與首字母大寫形式查詢出來,第一列為小寫形式,第二列為首字母大寫
SELECT LOWER(ENAME),INITCAP(ENAME) FROM  emp_xiangyoulu;

4:將字串'aaaaaabaaaaa'中左右兩邊的a去除
SELECT TRIM('a' FROM 'aaaaaabaaaaa') FROM  DUAL;--b
SELECT LTRIM('aaaaaabaaaaa','a') FROM DUAL;--baaaaa;;去除左邊的‘a’;

5:顯示每個員工的名字,要求顯示10位,第一列左對齊效果,第二列右對齊效果
SELECT ENAME,RPAD(ENAME,10,'#'),LPAD(ENAME,10,'#') FROM emp_xiangyoulu; 

6:擷取字串'DOCTOR WHO'中的'WHO'
SELECT SUBSTR('DOCTOR WHO',-3,3) FROM DUAL;-->右起第三個字元開始

7:檢視'DOCTOR WHO'中'WHO'的位置
SELECT instr('DOCTOR WHO','WHO',1,1) FROM DUAL;

8:分別檢視55.789四捨五入保留小數點後2位,整數位,十位後的數字,顯示成三列。
SELECT ROUND(55.789,2), ROUND(55.789,0), ROUND(55.789,-1) FROM DUAL;

9:分別檢視55.789擷取後保留小數點後2位,整數位,十位後的數字,顯示成三列。
SELECT TRUNC(55.789,2),TRUNC(55.789,0),TRUNC(55.789,-1) FROM DUAL;

10:檢視每名員工工資百位以下的數字?
SELECT ENAME,sal,MOD(SAL,100) FROM emp_xiangyoulu;

11:檢視每名員工從入職到今天一共多少天,若有小數則向上取整。
SELECT ENAME,HIREDATE,CEIL(SYSDATE-hiredate) FROM emp_xiangyoulu;

12:檢視從2008-08-08號到今天為止一共經歷了多少天?
SELECT SYSDATE-TO_DATE('2008-08-08','YYYY-MM-DD') FROM DUAL;
--向上取整 ;;
SELECT CEIL(SYSDATE-TO_DATE('2008-08-08','YYYY-MM-DD')) FROM DUAL;

13:將每名員工入職時間以例如:(1981年12月3日的形式顯示)
SELECT ENAME,HIREDATE,TO_CHAR(HIREDATE,'YYYY"年"MM"月"DD"日"') FROM emp_xiangyoulu;

14:檢視每個員工入職所在月的月底是哪天?
SELECT ENAME,HIREDATE,LAST_DAY(HIREDATE) FROM emp_xiangyoulu;

15:檢視每名員工轉正日期(入職後3個月)
SELECT ENAME,HIREDATE,ADD_MONTHS(HIREDATE,3) FROM  emp_xiangyoulu;

16:檢視每名員工入職至今共多少個月?
SELECT ENAME,HIREDATE,CEIL(MONTHS_BETWEEN(SYSDATE,HIREDATE)) FROM emp_xiangyoulu;

17:檢視從明天開始一週內的週日是哪天?
SELECT SYSDATE,NEXT_DAY(SYSDATE,1) FROM DUAL;--下個週日
SELECT SYSDATE,NEXT_DAY(SYSDATE,7) FROM DUAL;--下個週六

18:檢視82年以後入職的員工的入職日期,82年以前的按照1982年01月01號顯示。格式都是DD-MON-RR(預設格式)
SELECT ENAME,HIREDATE FROM emp_xiangyoulu WHERE EXTRACT(YEAR FROM HIREDATE)>1982;
SELECT ENAME,to_char(HIREDATE,'YYYY"年"MM"月"DD"號"')
FROM emp_xiangyoulu WHERE EXTRACT(YEAR FROM HIREDATE)<1982;

19:檢視每名員工的入職年份?
SELECT ENAME,HIREDATE,EXTRACT(YEAR FROM HIREDATE) FROM emp_xiangyoulu;

20:顯示每個員工的總收入(工資加獎金),獎金為NULL的只看工資
--SELECT ENAME,SAL,COMM,SAL+COMM FROM emp_xiangyoulu;-->備註: xx + null = null;
SELECT ENAME,SAL,COMM,SAL+NVL(COMM,0) FROM emp_xiangyoulu;

21:使用NVL2實現20題的需求
SELECT ENAME,SAL,COMM,SAL+NVL2(COMM,COMM,0) FROM emp_xiangyoulu;