--第四章 單行函式
練習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類的成員函式。程式設計序,分別求兩個複數之和 差 積...