Oracle 單行函式

2021-07-11 10:34:19 字數 3038 閱讀 3915

關於單行函式是oracle的基礎內容,博主只是想要複習一遍,如果想要更細緻的內容,請移步

單行函式分為5類:字元函式、數值函式、日期函式、轉換函式、通用函式

以下使用到的emp表為oracle自帶的

1.字元函式

lower(chars):將字串轉為小寫

select lower(ename) from emp;

upper(chars):轉為大寫

select upper(ename) from emp;

initcap(chars):首字母大寫

select initcap(ename) from emp;

length(chars):求字串的字元長度

select length(ename) from emp; 

而lengthb統計的是位元組數

substr(chars,start,end):擷取字串

select substr(ename,1,3) from emp;

smith的結果:smi, 說明substr的擷取範圍是[1,3],同時也說明角標從1開始計數

instr(chara,charb):檢索charb在chara中第一次出現的位置

select instr('aqameda','me') from dual;

結果:instr('aqameda','me')

---------------------

4說明角標也是從1開始的

lpad和rpad:在左邊或右邊填充n個字元

select lpad('foo',5,'*') from dual;

trim(char1 from char2):去前後的指定字元

select trim('q' from 'qqaqq') from dual;

注意,只能指定乙個要去掉的字元,不能是字串,去空格指定為' '即可

replace(chars,old,new):替換

select replace('memeda','e','d') from dual;

select replace('memeda','me','dq') from dual;

可以替換字串

concat(char1,char2):字串連線

select concat('my name is :',ename) from emp;

結果:my name is :smith

my name is :allen

2.數值函式

round(num,i):四捨五入

select round(84.517,1) from dual;

結果:84.5

84.517保留一位小數,可以傳入負數,例如:round(84.517,-1)的結果為80

trunc(num,n):擷取n位小數

select trunc(84.517,0) from dual;結果:84

mod(num1,num2):求num1除以num2的餘數

select mod(100,30) from dual;結果為10

3.日期函式

補充知識:sysdate表示當前時間

months_between(date1,date2):    兩個時間之間的月數

select months_between(hiredate,sysdate) from emp;

計算員工入職月數

給時間加上月數

select add_months(sysdate,12) from dual;

last_day(date):    本月最後一天

select last_day(sysdate) from dual;

next_day(date,星期n):下乙個星期幾

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

下乙個星期六,但是不能寫禮拜六 

ound(trunc)也可以對日期四捨五入,規則是乙個月有沒有過一半,一年有沒有過一半

oracle的轉換分為顯式轉換和隱式轉換,隱式轉換由oracle自動完成,我們並不關心

oracle的顯示轉換:數字--字串,字串---日期之間的轉換

to_char():

1.由時間轉為字串

"當前時間"使用了雙引號,hh24表示用24小時制

2.由數字轉為字串

to_char(sal,'l9,999.99'):l表示本地貨幣符號,9表示一位數,逗號表示千位符

nvl(a,b):等同於mysql中的ifnull,表示a為null是,用b代替

select nvl(comm,0) from emp;

nvl2(a,b,c):如果a為null,返回c,否則返回b

select nvl2(comm,10,0) from emp;

nvl2是對nvl的增強,nvl在a不為null時只能返回其本身

nullif(a,b):如果a=b,返回null,否則返回a

coalesce(列1,列2):  從左到右 找到第乙個不為null的值

select comm,sal,coalesce(sal,comm) from emp

comm sal coalesce(sal,comm)

----- ---------- ------------------

800 800

300 1600 1600

500 1250 1250

2975 2975

1400 1250 1250

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 將引數轉換為全部大寫字母 ...