Oracle的函數 函數
Oracle函數能夠分爲單值函數和分組函數兩大類,單值函數又分爲字符函數、日期和時間函數、數字函數、轉換函數和混合函數:分組函數右count、max、min、avg、sum,均可以和group by 搭配使用。 測試
單值函數 spa
一、字符函數 ci
l 字符串鏈接函數 字符串
問題:把員工的姓名和工做類型連在一塊兒使用"-"分隔 數學
函數:concat(字符串1,字符串2) it
select concat(concat(ename,'-'),job) from |
擴展點:字符串鏈接符號
" || " ast
select ename || '-' || job from emp; 擴展 |
l 右對齊函數
問題:將員工的姓名右對齊顯示
函數:lpad(待處理的字符串,預留位置,填充符號)
select lpad(ename,10,' ') from emp; |
l 字符串截取函數
問題:截取員工姓名的前3個字符和字符4之後的內容顯示
函數:substr(字符串,起始位置,截取的個數)
substr(字符串,起始位置) --默認截取到最後
select ename, |
l 字符查找函數
問題:字母'T'在員工姓名中第一次出現和第二次出現的位置
函數:instr(字符串,查找的字符,查找的起始位置,出現的次數)
select ename, instr(ename,'T',1,1) as A, |
select ename from emp where |
問題:員工姓名首字母大寫顯示
函數:initcap(字符串)
select initcap(ename) from emp; |
問題:將員工姓名大寫轉換
函數:upper(字符串)/lower(字符串)
select upper(ename) , lower(ename) from |
問題:將姓名中的M所有替換成'*'顯示
函數:replace(字符串,帶替換的字符,替換後的字符)
select replace(ename,'M','*') from emp; |
l 字符串長度函數
問題:找出姓名長度大於5的員工姓名
函數:length(字符串)
select ename from emp where |
二、日期函數
l 系統時間
問題:返回系統的當前時間
函數:sysdate
說明:1、函數沒有「( )」
2、dual 是一張無心義的表,在Oracle專門用於函數的測試
select sysdate from dual; |
將時間類型轉成字符類型
函數:to_char(時間數據,格式)
select to_char(sysdate,'yyyy-mm-dd |
格式: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 |
三、
轉換函數
l to_char()見上例
l 時間轉換函數
函數:to_date(時間數據字符串,格式)
insert into 表名 values(to_date('2009-12-12','yyyy-mm-dd')); |
案例1:查詢在12年前參加工做的員工
Select |
案例2:查詢在當月倒數第三天參加工做的員工
函數:last_day(時間數據) -> 返回該日期所在月份的最後一天
select ename,hiredate from emp where |
案例3:查詢每一個員工的工做天數
格式:時間1-時間2 --> 返回相差的天數
select ename,hiredate,sysdate-hiredate |
四、
數學函數
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