Oracle第四章單行函式習題答案

2021-08-02 21:23:26 字數 3740 閱讀 2789

--第四章  單行函式

練習1

--筆記:–

initcap(列名|

表示式)

:將每個單詞的第乙個字母轉換成大寫,其餘的字母都轉換成小寫

selectinitcap(ename),length(ename) "ename長度" from emp where substr(ename,0,1) in('j','a','m')  order by ename asc;

練習2• 1.查詢員工姓名中中包含大寫或小寫字母a的員工姓名。

select ename fromemp  where upper(ename)like'%a%'

• 2.查詢部門編號為10或20,入職日期在81年5月1日之後,並且姓名中包含大寫字母a的員工姓名,員工姓名長度(提示,要求使用instr函式,不能使用like進行判斷)

selectename,length(ename) from emp  wheredeptno in (10,20)

and  instr(ename,'a')>0  or  instr(ename,'a') >0  and hiredate  > '1-5月-81';

• 3.查詢每個職工的編號,姓名,工資要求將查詢到的資料按照 要求將查詢到的資料按照定的格式合併成乙個字串. –

前10位:編號

,不足部分用*填充

,左對齊

selectlpad(empno,10,'*'),ename,sal from emp ;

–中間10位:姓名,不足部分用*填充

,左對齊

selectempno,lpad(ename,10,'*'),sal from emp ;

–後10位:工資,不足部分用*填充

,右對齊

selectlpad(empno,10,'*'),lpad(ename,10,'*'),rpad(sal,10,'*')  from emp ;

練習3

1.四捨五入

select round(100.456,2),round(100.456,1),round(100.456,0)  from dual;

2.沒有四捨五入結果

select trunc(100.456,2),trunc(100.456,1),trunc(100.456,0)  from dual;

練習4

1.查詢員工一共入職多少天,當前時間-入職

selectempno,ename, sysdate- hiredate from emp

練習5

• 1.查詢伺服器當前時間

select sysdatefrom dual;

select ename,extract(month from hiredate), months_between('1-1月-2000',hiredate) months--extract(month from '1-1月-2000')

from emp  where deptno in(10,20);

selectename,hiredate, add_months(hiredate,6) new_date,  

next_day(add_months(hiredate,6),'星期一'),

next_day(add_months(hiredate,6),'星期一'),

last_day(add_months(hiredate,6))

from emp

where job <>'manager';

練習6

• 1.顯示伺服器系統當前時間,格式為2007-10-12

selectto_char(sysdate,'yyyy-mm-dd hh:mm:ss') from dual;

select  ename,to_char(hiredate,'day') from emp;

select  ename,to_char(sal,'$999,999.99') from emp;

• 4.把字串2015-3月-18 13:13:13 轉換成日期格式轉換成日期格式,並計算

課後作業

1.計算2023年1月1日到現在有多少月,多少周(四捨五入)。

--筆記:months_between(現在的,原來日期) months,計算有多少月

selectmonths_between(sysdate,'01-1月-2000') months,

round(round(sysdate- to_date('2000-01-01','yyyy-mm-dd'))/7) week

from dual

2.查詢員工ename的第三個字母是a的員工的資訊(使用2個函式)。

select * from empwhere ename like '__a%';

select * from empwhere substr(ename,3,1)='a';

select * from empwhere instr(ename,'a',3)=3;

3.使用trim函式將字串『hello』、『 hello 』、分別處理得到下列字串ello、hello、ll、hello。。

selecttrim(leading 'h' from 'hello') ,trim(' hello '),

trim (both'l'  from 'hello'),trim(' hello ')

from dual;

4.將員工工資按如下格式顯示:123,234.00 rmb 。

selectto_char('123234.00','000,999.00')|| 'rmb' from dual

5.查詢員工的姓名及其經理編號,要求對於沒有經理的顯示「no manager」字串。

select ename,nvl(to_char(mgr) , 'no manager') from emp;

select ename,coalesce(to_char(mgr) , 'no manager') from emp;

select ename, (case when mgr is not null  thento_char(mgr) else 'no manager' end)

manager from emp;

6.將員工的參加工作日期按如下格式顯示:月份/年份。

selectename,hiredate,to_char(hiredate,'hh/rr') from emp;

7.在員工表中查詢出員工的工資,並計算應交稅款:如果工資小於1000,稅率為0,如果工資大於等於1000並小於2000,

稅率為10%,如果工資大於等於2000並小於3000,稅率為15%,如果工資大於等於3000,稅率為20%。

select

ename,sal,lpad(sal,15,'$'),

case

when sal > 0 and sal <1000 then sal * 0

when sal > =1000 and sal <2000 then sal * 0.1

when sal >= 2000 and sal <3000 then sal * 0.15

when sal >= 3000  then sal * 0.2

else 0

end tax

from emp;

8.建立乙個查詢顯示所有雇員的 ename和 sal。格式化sal為 15 個字元長度,用 $ 左填充,列標籤 salary。

select ename,lpad(sal,15,'$') from emp;

第四章習題

一。填空題 1 基 派生 2 單繼承 多繼承 3 私有繼承方式 4 公有 保護 5 多繼承 6 支配原則 7 解決二義性 8 使用作用域運算子 引進虛基類 二。選擇題 1 5 b cd abc c a 6 10 c b d ad a 三。判斷題 f t f t f f 四。簡答題 1.在物件導向技術...

第四章 習題

一 填空題 1 如類果類a繼承了b,那麼類a被稱為 基類,而類b被稱為 派生類。2 c 的兩種繼承為 單繼承和 多繼承。3 在預設情況下的繼承方式為 私有繼承方式 4 從基類中公有派生乙個類時,基類的公有成員就成為派生類的 公有 成員,而這個基類的保護成員就成為派生類的 保護成員。5 c 提供了 多...

C 第四章習題

1 定義乙個複數類complex,過載運算子 使之能用於複數的加法運算。將運算子函式過載為非成員 非友元的普通函式。程式設計序,求兩個複數之和。2 定義乙個複數類complex,過載運算子 使之能用於複數的加減乘除。運算子過載函式作為complex類的成員函式。程式設計序,分別求兩個複數之和 差 積...