oracle教程之oracle的單行函式詳解和舉例

2021-12-30 06:14:44 字數 3991 閱讀 3136

--大小寫控制函式

--upper

select * from emp where job = upper('salesman');

--lower

select * from emp where lower(job) = 'clerk';

--initcap

select empno, initcap(ename) from emp;

--upper、lower、initcap這三個函式的共同點,如果輸入引數值為null時,則返回null

select empno, initcap(null) from emp;

--字元控制函式

--字串連線符,實現雇員名與工資兩列的連線

select ename || ':' || sal from emp;

--字串連線的函式concat,實現雇員名與工資兩列的連線

select concat(concat(ename,':'),sal) from emp;

--截串函式 substr

select * from emp where substr(job,1,4) = 'sale';

--求字串長度的函式 length

select * from emp where length(ename) = 6;

--instr 求子串在字串中的位置

select instr('hello oracle','oracle') from dual;

select instr('hello oracle hello oracle', 'oracle', 1, 2) from dual;

--左填充函式 lpad

select lpad(job,9,'*') from emp;

--右填充函式 rpad

select rpad(job, 9, '*') from emp;

--替換函式 replace

select replace('hello oracle','oracle','world') from dual;--四捨五入的函式 round

--求員工的日工資

select round(sal/30,2) from emp;

--截斷函式 trunc

select round(sal/30,2),trunc(sal/30,2) from emp;

--求餘數的函式 mod

--求員工號為偶數的員工資訊

select * from emp where mod(empno,2)=0;--sysdate

select sysdate-1 昨天 , sysdate 今天, sysdate+1 明天 from dual;

--months_between

select round(months_between(sysdate,hiredate)/12)from emp;

--add_months

select ename,add_months(hiredate,30*12) from emp;

--next_day

select next_day(sysdate,'星期一')from dual;

--last_day

select sysdate,last_day(sysdate) from dual;

select empno,ename,last_day(hiredate) from emp;

--round

select hiredate, round(hiredate,'year'), round(hiredate,'month') from emp where empno=7654;

--trunc

select hiredate, trunc(hiredate,'year'), trunc(hiredate,'month') from emp where empno=7654;--隱式資料型別轉換的舉例

select * from emp where sal>'2000';

select * from emp where hiredate='02-4月-81';

--to_char 日期型別轉換成字元型別

select to_char(hiredate,'yyyy-mm-dd') from emp;

select to_char(hiredate,'yyyy"年"mm"月"dd"日"') from emp;

select to_char(hiredate,'dd-mon-rr','nls_date_language=american') from emp;

--to_char 數值型別轉換成字元型別

select sal,to_char(sal,'l0,000,000.00')from emp;

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

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

--to_date 字元型別轉換成日期型別

select ename,hiredate from emp where hiredate>to_date('1981-12-31','yyyy-mm-dd');

--to_number 字元型別轉換成數值型別

select ename,sal from emp where sal>to_number('¥2000','l99999');

--nvl

select ename,sal,comm,sal+nvl(comm,0) from emp;

--nvl2

select ename,sal,comm,nvl2(comm,comm+sal,sal) from emp;

--nullif

select empno,ename,hiredate,nullif(hiredate,trunc(sysdate,'month'))from emp;

--coalesce

select ename,sal,comm,coalesce(sal+comm,sal) from emp;--想顯示全部雇員的職位,但是這些職位要求替換為中文顯示:

----clerk:辦事員;

--salesman:銷售;

--manager:經理;

--analyst:分析員;

--president:總裁;

--case表示式

select empno,ename,

case job

when 'clerk' then '辦事員'

when 'salesman' then '銷售'

when 'manager' then '經理'

when 'analyst' then '分析員'

else '總裁'

end

from emp;

--decode函式

select empno,ename,job,decode(job,'clerk','辦事員','salesman','銷售','manager','經理','analyst','分析員','總裁')from emp;

--case表示式,區間值的判斷

select empno,ename,sal,

case when sal<2000 then '低'

when sal<5000 then '中'

else '高'

endfrom emp;--參照雇員資訊表,想顯示距聘用日期3個月後的下乙個星期一的日期,且日期格式如:2017-01-06。

select empno,ename,to_char(next_day(add_months(hiredate,3),'星期一'),'yyyy-mm-dd') new_date

from emp;

--參照雇員資訊表,顯示雇員日薪並四捨五入到2 位小數的結果,然後對薪資格式以『¥ 1,182.19』這樣的例子形式進行格式化

select empno,ename,sal,to_char(round(sal/30,2),'l9,999.99')

from emp;

Oracle官方教程之Fork Join

ork join框架是executorservice介面的一種具體實現,目的是為了幫助你更好地利用多處理器帶來的好處。它是為那些能夠被遞迴地拆解成子任務的工作型別量身設計的。其目的在於能夠使用所有可用的運算能力來提公升你的應用的效能。類似於executorservice介面的其他實現,fork jo...

Oracle官方教程之Fork Join

ork join框架是executorservice介面的一種具體實現,目的是為了幫助你更好地利用多處理器帶來的好處。它是為那些能夠被遞迴地拆解成子任務的工作型別量身設計的。其目的在於能夠使用所有可用的運算能力來提公升你的應用的效能。類似於executorservice介面的其他實現,fork jo...

Oracle官方併發教程之活躍度

乙個併發應用程式能及時執行的能力稱為活躍性。本節將介紹最常見的活躍性問題 死鎖 deadlock 以及另外兩個活躍性問題 飢餓 starvation 和活鎖 livelock 死鎖描述了這樣一種情景,兩個或多個執行緒永久阻塞,互相等待對方釋放資源。下面是乙個例子。alphone和gaston是朋友,...