Oracle第三章 函式

2021-08-27 05:12:30 字數 3817 閱讀 3744

第三章:函式

單值函式:針對每一行查詢內容給出乙個結果

組函式:把查詢的所有行按照某個標準分組,每乙個組給出乙個輸出

單值函式:

注意:單值函式可以隨意巢狀,但是潛逃之後先執行最裡層的,在執行外層的

字元函式

lower將字串轉化成小寫 select lower('hello') from dual;

查詢名字為pater的員工資訊 

select last_name,salart from s_emp where lower('last_name')=lower('patel');

upper將字串轉化為大寫 select upper('test') from dual;

initcap將字串中單詞首字母大寫 select initcap('hello world') from dual;

concat字串拼接,相當於|| select concat('hello','world') from dual;

substr對字串進行擷取的 

兩個引數,第二個引數表示從什麼位置擷取select substr('helloworld',4) from dual;//loworld

三個引數,第三個引數表示表示擷取的長度select substr('helloworld',4,5) from dual;//lowor

length獲取字串長度 select length('hello') from dual;

nvl處理有null的值,針對字串,時間,數字型別,第二個引數要和第乙個引數型別匹配

數字函式

round表示的是四捨五入 

乙個引數表示取整數,看小數點後一位 select round(35.468) from dual;//35

第二個引數是正數,表示小數點後取幾位,看到是取到小數點位的下一位

select round(35.468,1) from dual;

select round(35.468,4) from dual;

第二個引數是負數,表示看小數點前的位數,向前一位進值

select round(53.468,-1) from dual;//50

select round(53.468,-3) from dual;//0

trunc表示擷取,取整 

select trunc(35.468) from dual;//35

select trunc(35.468,1) from dual;

select trunc(35.468,-1) from dual;//30

select trunc(35.468,-2) from dual;//0

mod  表示取餘

select mod(1500,200) from dual;//100

日期函式

months_between 求兩個時間相差幾個月,不足乙個月小數表示,前面減後面

select months_between('23-8月-18','03-9月-18') from dual;

add_months 給某個時間增加幾個月

select add_month(sysdate,6) from dual;//04-3月-19

next_day 下乙個週幾是幾號

select next_day('23-8月-18','星期五') from dual;//24-8月-18

lat_day 指定月份的最後一天是幾號

select last_day(sysdate) from dual;//30-9月-18

round 對時間進行四捨五入   day month year

按照day擷取,看的是星期,從星期四開始都進入下週第一天,小於周四的回到本週第一天,第一天是週日

select round(to_date('04-9月-18','dd-mon-yy'),'day') from dual;//02-9月-18

按照month擷取,看的是天數,從16號開始進入下乙個月第一天,不到16號回到本月第一天

select round(to_date('04-9月-18','dd-mon-yy'),'month') from dual;//01-9月-18

按照year擷取,看的是月份,從7月開始進入下乙個年第一天,不到7月回到本年第一天

select round(to_date('04-9月-18','dd-mon-yy'),'year') from dual;//01-1月-19

trunc 對事件進行擷取,取整 day month year

按照day擷取,看的是星期,回到本週第一天,第一天是週日

select trunc(to_date('04-9月-18','dd-mon-yy'),'day') from dual;//02-9月-18

按照month擷取,看的是天數,回到本月第一天

select trunc(to_date('04-9月-18','dd-mon-yy'),'month') from dual;//01-9月-18

按照year擷取,看的是月份,回到本年第一天

select trunc(to_date('04-9月-18','dd-mon-yy'),'year') from dual;//01-1月-18

轉換函式

to_date 將字串轉化為時間

簡體中文環境 select to_date('04-9月-18','dd-mon-yy') from dual;

英文環境 select to_date('04-may-18','dd-mon-yy') from dual;

select to_date('04-09-18','dd-mm-yy') from dual;

to_number 將字串型別的數字轉換為數字型別,不能有非數字的內容

select to_number('122121') from dual;//122121

to_char

將數字型別轉化為特定格式的字串,第二個引數規定的是格式

fm去掉前面的空格,$表示沒有符號 9表示佔位不補位 0表示佔位並補位 

,千分符 .小數點 l表示本地幣種,和作業系統語言有關

select to_char('2333.33','fm$999,999.999') from dual;//$2,333.33

select to_char('2333.33','fm$000,000.000') from dual;//$002,333.330

select to_char('2333.33','fm$000.000') from dual;//$#######

select to_char('2333.33','fml$000,000.000') from dual;//¥002,333.330

將時間型別轉化為特定格式的字串,第二個引數是格式

yyyy完整難過的年份 mm表示月份 d表示乙個星期的第幾天 dd表示乙個月的第幾天

ddd一年的第幾天 year英文年份 month月份中文 ddsp月中的幾號英文 

ddspth月中的幾號英文 day星期幾 dy星期幾 hh小時,如果顯示24進製hh24 

mi分鐘 ss秒 am|pm顯示上下午

select to_char(sysdate,'d dd ddd') from dual;//3 04 247

select to_char(sysdate,'ddsp ddspth') from dual;//four fourth

select to_char(sysdate,'day dy') from dual;//星期二 星期二

注意:時間轉化為字串需要輸出特殊字元的時候雙引號引起來

select to_char(sysdate,'mm "of" dd') from dual;//09 of 04;

第三章 函式

函式是模組劃分的基本單位,是對外處理的一種抽象 c和c 的子程式體現為函式 呼叫其他函式的被稱為主函式 被其他行數呼叫的稱為被調函式 函式的語法形式 型別說明符 函式名 含型別說明的形式參數列 語句序列 形式引數 形式參數列 簡稱形參 表的內容如下 type1 name1,type2 name2,t...

第三章 函式程式設計

函式是一段具有特定功能的 可重用的語句組,用函式名來表示並通過函式名進行功能呼叫。函式也可以看作是一段具有名字的子程式 特性 1.減少重複 2.使程式變的可擴充套件 3.使程式變得易維護 語法定義 def sayhi 函式名 print hello,i m nobody sayhi 呼叫函式 可以帶...

第三章 函式 讀書心得

1.短小 函式盡可能的維持在一屏可見的範圍內。20行封頂 最好。短小除了閱讀輕鬆外,更便於理解,出錯的概率也比較小。2.只做一件事情 我們常常期望函式具有可擴充套件性,貌似有點不一致?3.每個函式乙個抽象層級 每個函式都對應乙個抽象層級 函式由相同抽象層級的其他函式組成 自頂向下讀 向下規則 4.s...