oracle詳細筆記 單行函式

2021-07-15 22:56:17 字數 3252 閱讀 7294

--                                一:簡單查詢

--1.選擇在部門 30 中員工的所有資訊

select * from emp e where e.deptno = '30';

--2.列出職位為( manager)的員工的編號,姓名

select e.empno,e.ename from emp e where e.job = 'manager';

--3.找出獎金高於工資的員工

select * from emp e where e.comm > e.sal;

--4.找出每個員工獎金和工資的總和

select e.ename,(e.comm+e.sal)total from emp e;

--5.找出部門 10 中的經理(manager)和部門 20 中的普通員工(clerk)

select *

from emp a

where (a.deptno = '10'

and a.job = 'manager')

or (a.deptno = '20'

and a.job = 'manager');

--6.找出部門 10 中既不是經理也不是普通員工,而且工資大於等於 2000 的員工:(in函式)

select *

from emp e

where e.deptno = '10'

and e.job not

in ('manager', 'manager')

and e.sal >= 2000;

--7.找出有獎金的員工的不同工作

select

distinct e.job, e.ename, e.sal, e.comm

from emp e

where e.comm is

notnull

and e.comm > 0;

--8.找出沒有獎金或者獎金低於 500 的員工

select * from emp e where e.comm is

null

or e.comm < 500 ;

--9.顯示雇員姓名,根據其服務年限,將最老的雇員排在最前面

select e.ename,e.hiredate from emp e order

by e.hiredate asc

-- -------------------------- 二:單行函式 --------------------- -----

--1.upper:轉換為大寫

select upper('abcd') from dual;

select * from emp e where e.ename = upper('smith');

--2:lower:轉換為小寫

select lower('asad') from dual;

--3:initcap:返回字串並將字串的第乙個字母變為大寫;

select initcap(e.ename) from emp e;

select initcap('smith') from dual;

--4.concat:拼接

select concat('123','abc') from dual;

select

'111' || '222'

from dual;

--5.substr:字串擷取:擷取右邊內容,包括左邊

select substr('abcdef',length('abcdef')-2) from dual

select substr('abcdef',-4,3) from dual;

--從右邊算起擷取:cde

--6.length

select e.ename,length(e.ename) from emp e;

--7.replace

select

replace(e.ename,'a','愛') from emp e ;

--8.instr:在乙個字串中查詢指定的字元,返回被查詢到的指定的字元的位置。(下表從1開始算起)

select instr('hello world','rl') from dual;

--9.lpad :左側開始填充

select lpad('hello',10,'@') from dual;

--10.rpad

select rpad('hello',10,'*') from dual;

--11.trim :過濾首位空格

select trim(' hello word ') from dual;

---數值函式

--1.round,第二個引數保留的小數字數

select round(412,-1) from dual;

select round(412.236,2) from dual;

--2.trunc:trunc函式返回處理後的數值,其工作機制與round函式極為類似,只是該函式不對指定小數前或後的部分做相應捨入選擇處理,而統統截去。

--注意:第二個引數可以為負數,表示為小數點左邊指定位數後面的部分截去,即均以0記。與取整類似,

--比如引數為1即取整到十分位,如果是-1,則是取整到十位

--trunc(89.985,2)=89.98

--trunc(89.985)=89

--trunc(89.985,-1)=80

select trunc(412.13,-2) from dual;

---日期函式

--1.months_between()

select months_between(sysdate,e.hiredate) from emp e ;

--2.add_months():增加月

select add_months(sysdate,2) from dual;

--next_day(date,char) date引數為日期型, char:為1~7或monday/mon~sunday/

--指定時間的下乙個星期幾(由char指定)所在的日期,

--char也可用1~7替代,1表示星期日,2代表星期一。。。。 還可以是星期

一、星期二。。。星期日

select next_day(sysdate,2) from dual;

--3.last_day:last_day函式返回指定日期對應月份的最後一天。

select last_day(sysdate) from dual;

oracle單行函式

1.字元函式 upper 全大寫 lower 全小寫 initcap 首字母大寫 length 取長度 substr 擷取字串 replace 替換 2.數值函式 round 四捨五入 trunc 擷取 mod 取餘 3.日期函式 當前日期 sysdate 日期 數字 日期 日期 數字 日期 日期 ...

oracle單行函式

單行函式 函式類別 單行 返回單個結果 substr,length 多行 返回多個結果,any,all 單行的分類 字元類,日期類,數字類,轉換類,通用類 1.字元類 轉換大小寫 lower 轉換為小寫 select ename,lower ename from emp upper 轉換為大寫 se...

Oracle單行函式

單行函式 運算元據物件,接受引數返回乙個結果,只對一行進行變換,每行返回乙個結果,可以轉換資料型別,可以巢狀,引數可以是一列或乙個值 一 字元函式 concat 字串連線,相當於 initcap 將引數的第乙個字母變為大寫 lower 將引數轉換為全部小寫字母 upper 將引數轉換為全部大寫字母 ...