Oracle中的單值函數

Oracle的函數 函數

              Oracle函數能夠分爲單值函數和分組函數兩大類,單值函數又分爲字符函數、日期和時間函數、數字函數、轉換函數和混合函數:分組函數右countmaxminavgsum,均可以和group by 搭配使用。 測試

         單值函數 spa

一、字符函數 ci

l  字符串鏈接函數 字符串

問題:把員工的姓名和工做類型連在一塊兒使用"-"分隔 數學

函數:concat(字符串1,字符串2) it







 

 

select concat(concat(ename,'-'),job) from
  emp;
table


 


擴展點:字符串鏈接符號
" || "
ast




 

 

select ename || '-' || job from emp; 擴展


 


l  右對齊函數

問題:將員工的姓名右對齊顯示

函數:lpad(待處理的字符串,預留位置,填充符號)  







 

 

select lpad(ename,10,' ') from emp;


 


         l  字符串截取函數

問題:截取員工姓名的前3個字符和字符4之後的內容顯示

函數:substr(字符串,起始位置,截取的個數)

substr(字符串,起始位置)  --默認截取到最後





 

 

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


 

l  字符查找函數

問題:字母'T'在員工姓名中第一次出現和第二次出現的位置

函數:instr(字符串,查找的字符,查找的起始位置,出現的次數)





 

 

select ename, instr(ename,'T',1,1) as A,
  instr(ename,'T',1,2) as B from emp;


 

  擴展:員工姓名中不含 M 的員工





 

 

select ename from emp where
  instr(ename,'M',1,1)=0


 


l  首字母大寫函數


問題:員工姓名首字母大寫顯示

函數:initcap(字符串)





 

 

select initcap(ename) from emp;


 
l  / 大寫函數


問題:將員工姓名大寫轉換

函數:upper(字符串)/lower(字符串)





 

 

select upper(ename) , lower(ename) from
  emp;


 


l  字符串替換函數


問題:將姓名中的M所有替換成'*'顯示

函數:replace(字符串,帶替換的字符,替換後的字符)





 

 

select replace(ename,'M','*') from emp;


 

l  字符串長度函數

問題:找出姓名長度大於5的員工姓名

函數:length(字符串)







 

select ename from emp where
  length(ename)>5;


 


二、日期函數

l  系統時間

問題:返回系統的當前時間

   函數:sysdate

   說明:1、函數沒有「( )

2dual 是一張無心義的表,在Oracle專門用於函數的測試





 

 

select sysdate from dual;


 


使用一個 to_char, 轉換函數類型


 將時間類型轉成字符類型

函數:to_char(時間數據,格式)





 

 

select to_char(sysdate,'yyyy-mm-dd
  hh:mi:ss') from dual;


 


 格式:yyyy

mm

dd 日期

d 一週中的第幾天

ddd 一年中的第幾天

day

month 月份

hh24 24小時制

     l  日期修改函數

問題:將系統時間添加2個月顯示

函數:add_months(時間數據,添加的月份)







 

select add_months(sysdate,2) from dual;


 


                              l  日期差函數

問題:顯示員工入職時間的月份統計



   函數:months_between(時間1,時間2)







 

 

select
  ename,hiredate,months_between(sysdate,hiredate) from emp;


 


            
  



三、 
轉換函數



l  to_char()見上例



 



l  時間轉換函數



         函數:to_date(時間數據字符串,格式)







 

 

insert into 表名 values(to_date('2009-12-12','yyyy-mm-dd'));


 


                 



  案例1:查詢在12年前參加工做的員工







 

 

Select
  ename,hiredate from emp where months_between(sysdate,hiredate)>144


 


  



  案例2:查詢在當月倒數第三天參加工做的員工



        函數:last_day(時間數據)  -> 返回該日期所在月份的最後一天







 

 

select ename,hiredate from emp where
  last_day(hiredate)-2 = hiredate;


 


         



  案例3:查詢每一個員工的工做天數



格式:時間1-時間2  -->  返回相差的天數







 

 

select ename,hiredate,sysdate-hiredate
  from emp;


 


        



四、 
數學函數



l 
round(數字) 四捨五入



  案例:按每個月30天計算員工的每日薪水,要求計算結果四捨五入到小數點後2



                        函數:round(數字,精度)







 

 

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


 


                 l trunc(數字) 取整函數->只保留整數部分


  案例:查詢員工工做了多少個月







 

 

select ename,trunc(months_between(sysdate,hiredate)) from emp;


 


                



l floor(數字) 向下取



  floor(1.9)  -> 1



l 
ceil(數字) 向上取



                        ceil(1.1) -> 2     花費 



l 
abs(數字) 取絕對值函數



l 
mod(數字1,數字2) 取餘函數



                        mod(5,4) -> 1



l 
power(數字,n次方)



                       power(2,4) -> 16





做者:中軟卓越天津ETC

相關文章
相關標籤/搜索