版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單行函數(shù)目標(biāo)通過(guò)本章學(xué)習(xí),您將可以:SQL中不同類型的函數(shù)。在SELECT
語(yǔ)句中使用字符,數(shù)字和日期函數(shù)。描述轉(zhuǎn)換型函數(shù)的用途。SQL函數(shù)函數(shù)輸入?yún)?shù)1參數(shù)2參數(shù)n函數(shù)執(zhí)行輸出結(jié)果兩種SQL函數(shù)單行函數(shù)多行函數(shù)每行返回一個(gè)結(jié)果多行返回一個(gè)結(jié)果函數(shù)單行函數(shù)單行函數(shù):處理數(shù)據(jù)項(xiàng)。接受參數(shù)并返回一個(gè)值。作用于每個(gè)返回的行。為每行返回一個(gè)結(jié)果??梢孕薷臄?shù)據(jù)類型??梢郧短?。接受的參數(shù)可以是一列,也可以是一個(gè)表達(dá)式。function_name[(arg1,arg2,...)]單行函數(shù)轉(zhuǎn)換函數(shù)字符函數(shù)數(shù)值函數(shù)日期函數(shù)常規(guī)函數(shù)單行函數(shù)字符函數(shù)字符函數(shù)LOWERUPPERINITCAPCONCATSUBSTRLENGTHINSTRLPAD|RPADTRIMREPLACE大小寫處理函數(shù)字符處理函數(shù)大小寫處理函數(shù)這類函數(shù)改變字符的大小寫:函數(shù)結(jié)果LOWER('SQLCourse')sqlcourseUPPER('SQLCourse')SQLCOURSEINITCAP('SQLCourse')SqlCourseSELECTemployee_id,last_name,department_idFROMemployeesWHERELOWER(last_name)='higgins';使用大小寫處理函數(shù)顯示員工Higgins的信息:SELECTemployee_id,last_name,department_idFROMemployeesWHERElast_name='higgins';norowsselected字符處理函數(shù)這類函數(shù)處理字符:函數(shù)結(jié)果CONCAT('Hello','World')HelloWorldSUBSTR('HelloWorld',1,5)HelloLENGTH('HelloWorld')10INSTR('HelloWorld','W')6LPAD(salary,10,'*')*****24000RPAD(salary,10,'*')24000*****REPLACE
('JACKandJUE','J','BL')BLACKandBLUETRIM('H'FROM'HelloWorld')elloWorldSELECTemployee_id,CONCAT(first_name,last_name)NAME,job_id,LENGTH(last_name),INSTR(last_name,'a')"Contains'a'?"FROMemployeesWHERESUBSTR(job_id,4)='REP';字符控制函數(shù)231213數(shù)字函數(shù)ROUND:將值舍入到指定的小數(shù)位。TRUNC:將值截?cái)嗟街付ǖ男?shù)位。MOD:返回除法運(yùn)算的余數(shù)。函數(shù)結(jié)果ROUND(45.926,2)45.93TRUNC(45.926,2)45.92MOD(1600,300)100SELECTROUND(45.923,2),ROUND(45.923,0),ROUND(45.923,-1)FROMDUAL;ROUND
函數(shù)DUAL
是一個(gè)‘偽表’,可以用來(lái)測(cè)試函數(shù)和表達(dá)式.331212TRUNC
函數(shù)SELECTROUND(45.923,2),ROUND(45.923),ROUND(45.923,-1)FROMDUAL;331212SELECTlast_name,salary,MOD(salary,5000)FROMemployeesWHEREjob_id='SA_REP';MOD
函數(shù)計(jì)算職稱為銷售代表的所有員工的薪金除以5000之后的余數(shù)。SELECTlast_name,hire_dateFROMemployeesWHEREhire_date<'01-FEB-88';處理日期Oracle數(shù)據(jù)庫(kù)以內(nèi)部數(shù)字格式存儲(chǔ)日期:世紀(jì),年,月,日,小時(shí),分鐘和秒。默認(rèn)的日期格式是DD-MON-RR.可以只指定年的后兩位在20世紀(jì)存放21世紀(jì)的日期。同樣可以在21世紀(jì)存放20世紀(jì)的日期。處理日期函數(shù)SYSDATE
返回:日期
時(shí)間與日期有關(guān)的運(yùn)算在日期上加上或減去一個(gè)數(shù)字結(jié)果仍為日期.兩個(gè)日期相減返回日期之間相差的天數(shù).可以用數(shù)字除以24來(lái)向日期中加上或減去小時(shí).SELECTlast_name,(SYSDATE-hire_date)/7ASWEEKSFROMemployeesWHEREdepartment_id=90;使用算數(shù)運(yùn)算處理日期日期函數(shù)函數(shù)描述MONTHS_BETWEEN兩個(gè)日期相差的月數(shù)ADD_MONTHS向指定日期中加上若干月數(shù)NEXT_DAY指定日期的下一天LAST_DAY月份的最后一天ROUND 日期按指定的格式四舍五入TRUNC日期按指定的格式截?cái)嗍褂萌掌诤瘮?shù)函數(shù)結(jié)果MONTHS_BETWEEN('01-SEP-95','11-JAN-94')19.6774194ADD_MONTHS('11-JAN-94',6)'11-JUL-94'NEXT_DAY('01-SEP-95','FRIDAY')'08-SEP-95'LAST_DAY('01-FEB-95')'28-FEB-95'使用日期函數(shù)假設(shè)
SYSDATE='25-JUL-03':函數(shù)結(jié)果ROUND(SYSDATE,'MONTH')01-AUG-03ROUND(SYSDATE,'YEAR')01-JAN-04TRUNC(SYSDATE,'MONTH')01-JUL-03TRUNC(SYSDATE,'YEAR')01-JAN-03練習(xí)3:概覽1本練習(xí)包括下列主題:書寫一個(gè)顯示當(dāng)前日期的查詢創(chuàng)建一個(gè)需要用到數(shù)值、字符以及日期函數(shù)的查詢?cè)趀mployee表中執(zhí)行對(duì)員工工作時(shí)間的計(jì)算。轉(zhuǎn)換函數(shù)隱式數(shù)據(jù)類型轉(zhuǎn)換顯式數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換隱式數(shù)據(jù)類型轉(zhuǎn)換對(duì)賦值操作,oracle自動(dòng)轉(zhuǎn)換以下數(shù)據(jù)類型:源數(shù)據(jù)類型目標(biāo)數(shù)據(jù)類型VARCHAR2orCHARNUMBERVARCHAR2orCHARDATENUMBERVARCHAR2DATEVARCHAR2隱式數(shù)據(jù)類型轉(zhuǎn)換表達(dá)式計(jì)算中,oracle自動(dòng)轉(zhuǎn)換以下數(shù)據(jù)類型:源數(shù)據(jù)類型目標(biāo)數(shù)據(jù)類型VARCHAR2orCHARNUMBERVARCHAR2orCHARDATE顯式數(shù)據(jù)類型轉(zhuǎn)換NUMBERCHARACTERTO_CHARTO_NUMBERDATETO_CHARTO_DATE使用TO_CHAR
函數(shù)處理日期
格式樣式具有以下特性:必須包含在單引號(hào)中。大小寫敏感??梢园我獾挠行У娜掌诟袷?。可以使用fm
去掉多余的空格或者前導(dǎo)零。與日期值之間通過(guò)逗號(hào)分隔。TO_CHAR(date,'format_model')日期格式的樣式元素元素描述YYYY用數(shù)字表示的完整的年份YEAR用字母拼寫的年份MM代表月份的兩位數(shù)值MONTH月份的全名MON代表月份的三個(gè)字母的縮寫DY代表星期幾的三個(gè)字母的縮寫DAY星期幾的全名DD用數(shù)字表示的月份中的某日日期格式的樣式元素時(shí)間格式:
可以添加字符串,字符串要放在雙引號(hào)中:
日期在月份中的位置:DD"of"MONTH12ofOCTOBERddspthfourteenthHH24:MI:SSAM15:45:32PMSELECTlast_name,TO_CHAR(hire_date,'fmDDMonthYYYY')ASHIREDATEFROMemployees;使用TO_CHAR
函數(shù)對(duì)日期轉(zhuǎn)換…使用TO_CHAR
函數(shù)對(duì)數(shù)字轉(zhuǎn)換以下是一些格式元素,可以將它們用于TO_CHAR函數(shù),以便將數(shù)據(jù)值作為字符進(jìn)行顯示:元素含義9代表一個(gè)數(shù)字0強(qiáng)制顯示零$放置一個(gè)浮動(dòng)的美元記號(hào)L使用浮動(dòng)的當(dāng)?shù)刎泿欧?hào).顯示小數(shù)點(diǎn),顯示千位指示符TO_CHAR(number,'format_model')SELECTTO_CHAR(salary,'$99,999.00')SALARYFROMemployeesWHERElast_name='Ernst';TO_CHAR
函數(shù)對(duì)數(shù)字的轉(zhuǎn)換使用TO_NUMBER
和TO_DATE
函數(shù)
使用TO_NUMBER
函數(shù)將字符串轉(zhuǎn)換成數(shù)字格式:使用
TO_DATE
函數(shù)將字符串轉(zhuǎn)換成日期格式:這些函數(shù)都有一個(gè)fx限定符,此限定符用于指定與TO_DATE函數(shù)的字符參數(shù)和日期樣式完全匹配的項(xiàng).TO_NUMBER(char[,'format_model'])TO_DATE(char[,'format_model'])RR
日期格式當(dāng)前年1995199520012001日期27-OCT-9527-OCT-1727-OCT-1727-OCT-95RR格式1995201720171995YY格式1995191720172095當(dāng)前年份的后兩位:0–490–4950–9950–99返回的日期在當(dāng)前世紀(jì)中返回的日期在當(dāng)前世紀(jì)的下一個(gè)世紀(jì)中返回的日期在當(dāng)前世紀(jì)的前一個(gè)世紀(jì)中返回的日期在當(dāng)前世紀(jì)中指定的兩位數(shù)年份:RR
日期格式示例使用RR日期格式查找雇傭日期在1990年之前的員工,此格式會(huì)使命令無(wú)論是在1999年執(zhí)行還是在現(xiàn)在運(yùn)行都會(huì)產(chǎn)生同樣的結(jié)果:SELECTlast_name,TO_CHAR(hire_date,'DD-Mon-YYYY')FROMemployeesWHEREhire_date<TO_DATE('01-Jan-90','DD-Mon-RR');嵌套函數(shù)單行函數(shù)可以嵌套任意層。嵌套函數(shù)的執(zhí)行順序是由內(nèi)到外。F3(F2(F1(col,arg1),arg2),arg3)步驟1=結(jié)果
1步驟2=結(jié)果
2步驟3=結(jié)果3SELECTlast_name,UPPER(CONCAT(SUBSTR(LAST_NAME,1,8),'_US'))FROMemployeesWHEREdepartment_id=60;嵌套函數(shù)常規(guī)函數(shù)這些函數(shù)可以使用任何數(shù)據(jù)類型,同時(shí)也適用于空值:NVL(expr1,expr2)NVL2(expr1,expr2,expr3)NULLIF(expr1,expr2)COALESCE(expr1,expr2,...,exprn)NVL
函數(shù)將空值轉(zhuǎn)換成一個(gè)已知的值:可以使用的數(shù)據(jù)類型有日期、字符、數(shù)字.數(shù)據(jù)類型必須匹配:NVL(commission_pct,0)NVL(hire_date,'01-JAN-97')NVL(job_id,'NoJobYet')SELECTlast_name,salary,NVL(commission_pct,0),(salary*12)+(salary*12*NVL(commission_pct,0))AN_SALFROMemployees;使用NVL
函數(shù)…1122SELECTlast_name,salary,commission_pct,NVL2(commission_pct,'SAL+COMM','SAL')incomeFROMemployeesWHEREdepartment_idIN(50,80);使用NVL2
函數(shù)1221SELECTfirst_name,LENGTH(first_name)"expr1",last_name,LENGTH(last_name)"expr2",NULLIF(LENGTH(first_name),LENGTH(last_name))resultFROMemployees;使用NULLIF
函數(shù)…123123使用COALESCE
函數(shù)COALESCE
與
NVL
相比的優(yōu)點(diǎn)在于
COALESCE
可以使用多個(gè)備選值.如果第一個(gè)表達(dá)式非空,則返回該表達(dá)式,否則,將對(duì)余下的表達(dá)式執(zhí)行COALESCE運(yùn)算.SELECTlast_name,COALESCE(manager_id,commission_pct,-1)commFROMemployeesORDERBYcommission_pct;使用COALESCE
函數(shù)…條件表達(dá)式在SQL語(yǔ)句中使用IF-THEN-ELSE邏輯使用兩種方法:CASE
表達(dá)式DECODE
函數(shù)CASE
表達(dá)式通過(guò)執(zhí)行IF-THEN-ELSE語(yǔ)句的任務(wù),可以簡(jiǎn)化條件查詢:CASEexprWHENcomparison_expr1THENreturn_expr1
[WHENcomparison_expr2THENreturn_expr2WHENcomparison_exprnTHENreturn_exprnELSEelse_expr]ENDSELECTlast_name,job_id,salary,CASEjob_idWHEN'IT_PROG'THEN1.10*salaryWHEN'ST_CLERK'THEN1.15*salaryWHEN'SA_REP'THEN1.20*salaryELSEsalaryEND"REVISED_SALARY"FROMemployees;使用CASE
表達(dá)式下面是使用case表達(dá)式的一個(gè)例子:……DECODE
函數(shù)在需要使用
IF-THEN-ELSE邏輯時(shí):DECODE(col|expression,search1,result1
[,search2,result2,...,]
[,default])SELECTlast_name,job_id,salary,DECODE(job_id,'IT_PROG',1.10*salary,'ST_CLERK',1.15*salary,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年農(nóng)行個(gè)人貸款合同模板2篇
- 二零二五年度體育場(chǎng)館租賃與賽事場(chǎng)地標(biāo)識(shí)系統(tǒng)建設(shè)合同
- 2025年度綠色生態(tài)農(nóng)業(yè)園建設(shè)與管理合同4篇
- 二零二五年度個(gè)性化廚具安裝與整體廚房設(shè)計(jì)合同3篇
- 二零二五年度溫泉度假村大理石地暖鋪設(shè)合同4篇
- 二零二五年度存量房買賣合同合同糾紛處理流程與期限(2024版)4篇
- 2025年度農(nóng)業(yè)耕地租賃合同環(huán)境保護(hù)與修復(fù)規(guī)范4篇
- 2025年度臨時(shí)用工勞動(dòng)關(guān)系解除合同3篇
- 2025年度個(gè)人旅游服務(wù)合同標(biāo)準(zhǔn)范本3篇
- 二零二五版木材廠土地租賃合同與林業(yè)科技創(chuàng)新合作4篇
- 消防產(chǎn)品目錄(2025年修訂本)
- 地方性分異規(guī)律下的植被演替課件高三地理二輪專題復(fù)習(xí)
- 光伏項(xiàng)目風(fēng)險(xiǎn)控制與安全方案
- 9.2提高防護(hù)能力教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)上冊(cè)
- 催收培訓(xùn)制度
- 牧場(chǎng)物語(yǔ)-礦石鎮(zhèn)的伙伴們-完全攻略
- ISO 22003-1:2022《食品安全-第 1 部分:食品安全管理體系 審核與認(rèn)證機(jī)構(gòu)要求》中文版(機(jī)翻)
- 人教版六年級(jí)上冊(cè)解方程練習(xí)300道及答案
- 2024年廣東省高考地理真題(解析版)
- 2024年江蘇農(nóng)牧科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)附答案
- 2024高考物理廣東卷押題模擬含解析
評(píng)論
0/150
提交評(píng)論