20.顯示在一個(gè)月內(nèi)為30天的情況所有員工的日薪悼院,忽略余數(shù)
答案
select ename,TRUNC(sal/30) from emp;
思路
日薪表達(dá)式應(yīng)為sal/30,忽略余數(shù)使用TRUNC()函數(shù),TRUNC(sal,n)截取數(shù)值到小數(shù)點(diǎn)后n位咒循。
21.將所有雇員姓名按照小寫字母返回
答案
SELECT LOWER(ename) from emp;
思路
使用函數(shù)LOWER(),將參數(shù)內(nèi)容轉(zhuǎn)為小寫据途。
22.要求查詢出姓名長度正好是5的雇員信息
答案
SELECT ename,LENGTH(ename) from emp where LENGTH(ename) = 5;
思路
限制條件姓名長度為5绞愚,應(yīng)該使用LENGTH(ename) = 5。
23使用字符"_"替換掉姓名中的所有字母A
答案
SELECT REPLACE(ename,'A','_') from emp;
思路
使用函數(shù)REPLACE(參數(shù)1昨凡,參數(shù)2爽醋,參數(shù)3),將參數(shù)1中的參數(shù)2替換為參數(shù)3便脊。
24.要求截取每個(gè)雇員姓名后的三個(gè)字母
答案
SELECT ename, SUBSTR(ename,-3) from emp;
SUBSTR(s1,n1,[n2]) 返回第一個(gè)參數(shù)中叔收,從第n1位開始,長度為n2的子串近顷;
在ORACLE數(shù)據(jù)庫中桐罕, SUBSTR()函數(shù)從0或1開始都是一樣的。
25.求出每個(gè)雇員到今天為止的受雇天數(shù)
答案
SELECT ename,hiredate,SYSDATE-hiredate from emp;
思路
日期 - 時(shí)間 = 數(shù)字晌杰,表示的是兩個(gè)日期間的天數(shù)跷睦;
但是注意:應(yīng)使用大日期減去小日期的形式。
26,求出四個(gè)月后的日期
答案
SELECT ADD_MONTHS(SYSDATE,4) from dual;
思路
ADD_MONTHS(日期,數(shù)字) :求出若干月之后的日期;
SYSDATE表示當(dāng)前系統(tǒng)時(shí)間肋演。
27.求出每個(gè)雇員到今天為止的受雇月份抑诸。
答案
SELECT ename,hiredate,MONTHS_BETWEEN(SYSDATE,hiredate) FROM emp;
思路
MONTHS_BETWEEN(日期1,日期2):求出兩個(gè)日期之間相隔的月數(shù);
28.要求查詢出每個(gè)雇員的全部年薪
答案
SELECT ename,sal * 12+NVL(comm,o) FROM emp;
思路
由于任何包含null的表達(dá)式運(yùn)算結(jié)果都是null,因此使用nvl函數(shù)將null轉(zhuǎn)為0.
29.把hiredate列看作員工的生日爹殊,求本月過生日的員工
答案
SELECT * FROM emp where to_char(hiredate,'MM') = to_char(SYSDATE,'MM');
思路
根據(jù)題意蜕乡,將hiredate 與 SYSDATE 中的月份進(jìn)行比較即可,使用 TO_CHAR(日期,'MM')函數(shù)解決梗夸。