--大小寫控制函式
--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是朋友,...