คำอธิบายโดยละเอียดของฟังก์ชันแถวเดียวและฟังก์ชันกลุ่มของ PL/SQL ฟังก์ชันคือโปรแกรมที่มีพารามิเตอร์เป็นศูนย์หรือมากกว่าและค่าที่ส่งคืน Oracle มีชุดฟังก์ชันในตัวใน SQL
ฟังก์ชันเหล่านี้สามารถเรียกว่าคำสั่ง SQL หรือ PL/SQL ฟังก์ชันส่วนใหญ่แบ่งออกเป็นสองประเภท:
ฟังก์ชันกลุ่มฟังก์ชันแถวเดียว บทความนี้อธิบายวิธีการใช้ฟังก์ชันแถวเดียวและกฎสำหรับการใช้งาน
ฟังก์ชันแถวเดียวใน SQL
SQL และ PL/SQL มาพร้อมกับฟังก์ชันหลายประเภท รวมถึงฟังก์ชันอักขระ ตัวเลข วันที่ การแปลง และฟังก์ชันผสมสำหรับการประมวลผลข้อมูลแถวเดียว
ดังนั้นสิ่งเหล่านี้จึงสามารถเรียกรวมกันว่าฟังก์ชันแถวเดียว ฟังก์ชันเหล่านี้สามารถใช้ได้ใน SELECT, WHERE, ORDER BY และส่วนคำสั่งอื่นๆ
ตัวอย่างเช่น ตัวอย่างต่อไปนี้ประกอบด้วยฟังก์ชันบรรทัดเดียว เช่น TO_CHAR, UPPER และ SOUNDEX
SELECT ename,TO_CHAR(จ้าง,'วัน,วว-จ.-ปปปป')
จากผู้ปฏิบัติงาน
โดยที่ UPPER (ename) เช่น 'AL%'ORDER BY SOUNDEX (ename)
ฟังก์ชันแถวเดียวยังสามารถใช้ในคำสั่งอื่นๆ ได้ เช่น SET clause ของการอัพเดต, VALUES clause ของ INSERT และ WHERE clause ของ DELET
การสอบเพื่อรับใบรับรองให้ความสำคัญกับการใช้ฟังก์ชันเหล่านี้ในคำสั่ง SELECT เป็นพิเศษ ดังนั้นความสนใจของเราจึงมุ่งเน้นไปที่คำสั่ง SELECT ด้วยเช่นกัน
ฟังก์ชัน NULL และฟังก์ชันแถวเดียว การทำความเข้าใจ NULL อาจเป็นเรื่องยากในตอนแรก และแม้แต่ผู้มีประสบการณ์มากก็อาจยังสับสนได้
ค่า NULL แสดงถึงข้อมูลที่ไม่รู้จักหรือค่า null
กฎนี้ยังใช้กับหลายฟังก์ชัน เฉพาะ CONCAT, DECODE, DUMP, NVL และ REPLACE เท่านั้นที่สามารถส่งคืนค่าที่ไม่ใช่ NULL เมื่อเรียกด้วยพารามิเตอร์ NULL
ในบรรดาฟังก์ชันเหล่านี้ ฟังก์ชัน NVL มีความสำคัญที่สุดเนื่องจากสามารถจัดการค่า NULL ได้โดยตรง
NVL มีพารามิเตอร์สองตัว: NVL(x1,x2) ทั้ง x1 และ x2 เป็นนิพจน์ เมื่อ x1 เป็นโมฆะ ระบบจะส่งกลับ X2 มิฉะนั้น x1 จะถูกส่งกลับ
มาดูตารางข้อมูล emp กัน ประกอบด้วยเงินเดือนและโบนัส
ชื่อคอลัมน์
ประเภทคีย์โบนัสเงินเดือน emp_id
pk nulls/unique nn,u nnfk ตารางประเภทข้อมูล number number numberlength 11.2 11.2
แทนที่จะบวกเงินเดือนและโบนัสเพียงอย่างเดียว หากแถวใดแถวหนึ่งมีค่าว่าง ผลลัพธ์จะเป็นโมฆะ ดังตัวอย่างต่อไปนี้:
อัพเดต empset เงินเดือน=(เงินเดือน+โบนัส)*1.1
ในใบแจ้งยอดนี้ เงินเดือนและโบนัสของพนักงานจะถูกอัพเดตเป็นค่าใหม่ แต่หากไม่มีโบนัส
นั่นคือเงินเดือน + null จากนั้นจะมีการสรุปที่ผิด ในเวลานี้ ต้องใช้ฟังก์ชัน nvl เพื่อกำจัดอิทธิพลของค่า null
ดังนั้นข้อความที่ถูกต้องคือ:
อัปเดตเงินเดือน empset=(salary+nvl(bonus,0)*1.1
ฟังก์ชันสตริงบรรทัดเดียว ฟังก์ชันสตริงบรรทัดเดียวใช้เพื่อจัดการข้อมูลสตริง ส่วนใหญ่มีพารามิเตอร์ตั้งแต่หนึ่งตัวขึ้นไป และส่วนใหญ่จะส่งคืนสตริง
แอสกีไอ()
c1 เป็นสตริง ส่งกลับรหัส ASCII ของตัวอักษรตัวแรกของ c1 และฟังก์ชันผกผันของมันคือ CHR()
เลือก ASCII('A') BIG_A,ASCII('z') BIG_z
จาก empBIG_A BIG_z65 122
CHR(<i>)[NCHAR_CS]
i คือตัวเลขและฟังก์ชันส่งคืนการแสดงค่าทศนิยมของอักขระ
เลือก CHR(65),CHR(122),CHR(223)
จาก empCHR65 CHR122 CHR223A z B
คอนแคต(,)
ทั้ง c1 และ c2 เป็นสตริง ฟังก์ชันจะเชื่อมต่อ c2 กับด้านหลังของ c1 ถ้า c1 เป็นโมฆะ c2 จะถูกส่งคืน ถ้า c2 เป็นโมฆะ ฟังก์ชันจะถูกส่งกลับ
ถ้าทั้ง c1 และ c2 เป็นโมฆะ ให้ส่งกลับค่า null มันจะส่งกลับผลลัพธ์เดียวกันกับตัวดำเนินการ ||
เลือกชื่อผู้ใช้ concat('slobo ','Svoboda')
จาก dualusernameslobo Syoboda
INITCAP()
c1 เป็นสตริง ฟังก์ชันจะส่งกลับตัวอักษรตัวแรกของแต่ละคำเป็นตัวพิมพ์ใหญ่ และตัวอักษรอื่นๆ เป็นตัวพิมพ์เล็ก คำประกอบด้วยช่องว่าง อักขระควบคุม
ข้อจำกัดของเครื่องหมายวรรคตอน
เลือก INITCAP('veni,vedi,vici') Ceasar
จาก dualCeasarVeni,Vedi,Vici
INSTR(,[,<i><[,]])
c1 และ c2 เป็นสตริงทั้งคู่ ส่วน i และ j เป็นจำนวนเต็ม ฟังก์ชันส่งคืนตำแหน่งของการเกิดขึ้นครั้งที่ j ของ c2 ใน c1 และการค้นหาเริ่มต้นจากอักขระ i-th ของ c1
เมื่อไม่พบอักขระที่ต้องการ ระบบจะส่งกลับ 0 หาก i เป็นจำนวนลบ การค้นหาจะดำเนินการจากขวาไปซ้าย แต่ตำแหน่งจะยังคงคำนวณจากซ้ายไปขวา
ค่าเริ่มต้นสำหรับ i และ j คือ 1
SELECT INSTR('มิสซิสซิปปี้','i',3,3)
จาก dual INSTR('MISSISSIPPI','I',3,3)
11
เลือก INSTR('มิสซิสซิปปี้','i',-2,3)
จาก dual INSTR('MISSISSIPPI','I',3,3)
2
INSTRB(,[,i[,j])
เช่นเดียวกับฟังก์ชัน INSTR() ยกเว้นว่าจะส่งกลับไบต์ สำหรับไบต์เดี่ยว INSTRB() จะเท่ากับ INSTR()
ความยาว()
c1 เป็นสตริง และจะส่งกลับความยาวของ c1 ถ้า c1 เป็นโมฆะ ค่า null จะถูกส่งกลับ
เลือก LENGTH('Ipso Facto') ตามลำดับ
จากดูอัลเลอร์โก10
LENGTHb()
เช่นเดียวกับ LENGTH() ส่งคืนไบต์
ต่ำกว่า()
ส่งกลับอักขระตัวพิมพ์เล็กของ c ซึ่งมักจะปรากฏในสตริงย่อยที่
เลือกด้านล่าง (ชื่อสี)
จากรายละเอียดรายการ
โดยที่ต่ำกว่า (ชื่อสี) เช่น '%white%'COLORNAMEWinterwhite
LPAD(,<i><[,])
c1 และ c2 เป็นสตริงทั้งคู่ และ i เป็นจำนวนเต็ม ใช้สตริง c2 เสริมความยาว i ทางด้านซ้ายของ c1 ซึ่งสามารถทำซ้ำได้หลายครั้ง ถ้า i น้อยกว่าความยาวของ c1
จากนั้นจะมีเพียงอักขระ c1 เท่านั้นตราบใดที่ฉันจะถูกส่งกลับ และอักขระอื่นๆ จะถูกตัดทอน ค่าเริ่มต้นของ c2 คือช่องว่างเดียว โปรดดู RPAD
เลือก LPAD(answer,7,'') มีเบาะ, คำตอบไม่มีเบาะ
จากคำถาม;
PADDED UNPADDED ใช่ ใช่ ไม่ใช่ ไม่ใช่ บางทีอาจจะ
LTริม(,)
ลบอักขระซ้ายสุดใน c1 เพื่อให้อักขระตัวแรกไม่อยู่ใน c2 หากไม่มี c2 ดังนั้น c1 จะไม่เปลี่ยนแปลง
เลือก LTRIM('Mississippi','Mis') จาก dualLTRppi
RPAD(,<i><[,])
ใช้สตริง c2 เพื่อเสริมความยาว i ทางด้านขวาของ c1 ซึ่งสามารถทำซ้ำได้หลายครั้ง หาก i น้อยกว่าความยาวของ c1 ก็จะมีเพียงอักขระ c1 เท่านั้นที่จะถูกส่งกลับ
ส่วนอื่นๆ จะถูกตัดทอน ค่าเริ่มต้นของ c2 คือช่องว่างเดียว และค่าอื่นๆ จะคล้ายกับ LPAD
RTริม(,)
ลบอักขระขวาสุดใน c1 เพื่อไม่ให้อักขระตัวสุดท้ายอยู่ใน c2 หากไม่มี c2 ดังนั้น c1 จะไม่เปลี่ยนแปลง
แทนที่(,[,])
c1, c2 และ c3 เป็นสตริงทั้งหมด ฟังก์ชันจะแทนที่ c2 ที่ปรากฏใน c1 ด้วย c3 และส่งคืน
เลือกแทนที่ ('ตัวเมือง', 'ขึ้น', 'ลง')
จากตัวเมือง dualREPLACE
STBSTR(,<i><[,])
c1 เป็นสตริง i และ j เป็นจำนวนเต็ม และสตริงย่อยที่มีความยาว j จะถูกส่งกลับโดยเริ่มจากตำแหน่ง i-th ของ c1 หรือจนถึงจุดสิ้นสุดของสตริงหาก j ว่างเปล่า
เลือก SUBSTR('ข้อความ',1,4)
จาก dualSUBSMess
SUBSTRB(,<i>[,])
โดยคร่าวๆ จะเหมือนกับ SUBSTR ยกเว้นว่า I และ J คำนวณเป็นไบต์
ซาวด์เด็กซ์()
ส่งกลับคำที่ฟังดูคล้ายกับ c1
เลือก SOUNDEX('dawes') Dawes SOUNDEX('daws') Daws, SOUNDEX('ดอว์สัน')
จาก dualDawes Daws DawsonD200 D200 D250
แปล(,,)
แทนที่อักขระเดียวกันใน c1 เป็น c2 ด้วย c3
เลือกการทดสอบ TRANSLATE('fumble','uf','ar') จาก dualTEXTramble
ตัด([[]] จาก c3)
ลบรายการแรก รายการสุดท้าย หรือทั้งสองรายการในสตริง c3
เลือก TRIM(' space padded ') ตัดแต่งจาก dual TRIMspace padded
บน()
ส่งกลับเวอร์ชันตัวพิมพ์ใหญ่ของ c1 ซึ่งมักจะปรากฏในสตริงย่อยที่
เลือกชื่อจากคู่โดยที่ UPPER (ชื่อ) LIKE 'KI%'NAMEKING
ฟังก์ชันตัวเลขแถวเดียว ฟังก์ชันตัวเลขแถวเดียวทำงานกับข้อมูลตัวเลข ดำเนินการทางคณิตศาสตร์และเลขคณิต ฟังก์ชันทั้งหมดใช้พารามิเตอร์ตัวเลขและส่งกลับค่าตัวเลข
ตัวถูกดำเนินการและค่าของฟังก์ชันตรีโกณมิติทั้งหมดเป็นเรเดียนแทนที่จะเป็นมุม Oracle ไม่มีฟังก์ชันการแปลงในตัวสำหรับเรเดียนและมุม
เอบีเอส()
ส่งกลับค่าสัมบูรณ์ของ n
เอคอส()
ฟังก์ชันโคแฟกเตอร์ผกผันจะส่งกลับตัวเลขระหว่าง -1 ถึง 1 n แสดงถึงเรเดียน
เลือก ACOS (-1) pi, ACOS (1) ZERO
จาก dualPI ZERO3.14159265 0
ASIN()
อย่างไรก็ตาม ฟังก์ชันลึกลับส่งคืน -1 ถึง 1 โดย n แทนเรเดียน
อะตัน()
ฟังก์ชันอาร์กแทนเจนต์จะส่งกลับค่าอาร์กแทนเจนต์ของ n โดยที่ n แทนเรเดียน
เซล()
ส่งกลับจำนวนเต็มที่น้อยที่สุดที่มากกว่าหรือเท่ากับ n
คอส()
ส่งกลับค่าร่วมของ n โดยที่ n คือเรเดียน
โคช()
ส่งกลับค่าไฮเปอร์โบลิกโคแฟกเตอร์ของ n โดยที่ n คือตัวเลข
เลือก COSH(<1.4>)
จาก dualCOSH(1.4)2.15089847
ค่าประสบการณ์()
ส่งคืนค่ากำลังที่ n ของ e, e=2.71828183
พื้น()
ส่งกลับจำนวนเต็มที่มากที่สุดน้อยกว่าหรือเท่ากับ N
แอลเอ็น()
ส่งกลับค่าลอการิทึมธรรมชาติของ N ซึ่งต้องมากกว่า 0
บันทึก(,)
ส่งกลับค่าลอการิทึมของ n1 ไปยังฐาน n2
มด()
ส่งกลับส่วนที่เหลือของ n1 หารด้วย n2
พลัง(,)
ส่งคืนค่า n1 ยกกำลัง n2
กลม(,)
ส่งกลับค่า n1 ที่ปัดเศษเป็น n2 ตำแหน่งทางด้านขวาของจุดทศนิยม ค่าเริ่มต้นของ n2 คือ 0 คราวนี้ จำนวนเต็มที่ใกล้กับจุดทศนิยมจะถูกปัดเศษ
ถ้า n2 เป็นจำนวนลบ ระบบจะปัดเศษให้เป็นตัวเลขทางด้านซ้ายของจุดทศนิยม n2 จะต้องเป็นจำนวนเต็ม
เลือก รอบ(12345,-2),รอบ(12345.54321,2)
จากคู่รอบ(12345,-2) รอบ(12345.54321,2)12300 12345.54
เข้าสู่ระบบ()
ถ้า n เป็นจำนวนลบ ก็จะส่งกลับ -1 ถ้า n เป็นจำนวนบวก ก็จะส่งกลับ 1 และถ้า n=0 ก็จะส่งกลับ 0
บาป()
ส่งกลับค่าบวกของ n โดยที่ n คือเรเดียน
สิน()
ส่งกลับค่าบวกไฮเปอร์โบลิกของ n โดยที่ n คือเรเดียน
SQRT()
ส่งคืนค่ารากที่สองของ n โดยที่ n คือเรเดียน
ตาล()
ส่งกลับค่าแทนเจนต์ของ n โดยที่ n คือเรเดียน
ทานห์()
ส่งกลับค่าไฮเปอร์โบลิกแทนเจนต์ของ n โดยที่ n คือเรเดียน
ทรังค์(,)
ส่งกลับค่า n1 ที่ถูกตัดทอนเป็นทศนิยม n2 ตำแหน่ง การตั้งค่าเริ่มต้นของ n2 คือ 0 เมื่อ n2 เป็นการตั้งค่าเริ่มต้น n1 จะถูกตัดทอนให้เป็นจำนวนเต็ม
ถ้า n2 เป็นค่าลบ ค่านั้นจะถูกตัดทอนที่ตำแหน่งที่สอดคล้องกันทางด้านซ้ายของจุดทศนิยม
ฟังก์ชันวันที่แถวเดียว
ฟังก์ชันวันที่บรรทัดเดียวทำงานกับชนิดข้อมูล DATA และส่วนใหญ่จะมีพารามิเตอร์ของชนิดข้อมูล DATA
ค่าที่ส่งคืนส่วนใหญ่เป็นค่าประเภทข้อมูล DATA ด้วย
เพิ่ม_เดือน(,<i>)
ส่งกลับผลลัพธ์ของวันที่ d บวก i เดือน ฉันสามารถเป็นจำนวนเต็มใดก็ได้ หากฉันเป็นทศนิยม
จากนั้นฐานข้อมูลจะแปลงเป็นจำนวนเต็มโดยปริยายและจะตัดทอนส่วนหลังจุดทศนิยม
LAST_DAY()
ฟังก์ชั่นส่งคืนวันสุดท้ายของเดือนที่มีวันที่ d
MONTHS_BETWEEN(,)
ส่งกลับจำนวนเดือนระหว่าง d1 ถึง d2 ถ้าวันที่ของ d1 และ d2 เท่ากัน หรือทั้งสองอย่างเป็นวันสุดท้ายของเดือน
จากนั้นจะส่งกลับจำนวนเต็ม มิฉะนั้นผลลัพธ์ที่ส่งคืนจะมีเศษส่วน
ใหม่_TIME(,,)
d1 เป็นประเภทข้อมูลวันที่ เมื่อวันที่และเวลาในเขตเวลา tz1 เป็น d ให้ส่งคืนวันที่และเวลาในเขตเวลา tz2
tz1 และ tz2 เป็นสตริง
NEXT_DAY(,)
ส่งกลับวันแรกถัดจากวันที่ d ที่กำหนดโดย dow ซึ่งระบุวันในสัปดาห์โดยใช้ภาษาที่กำหนดในเซสชันปัจจุบัน
องค์ประกอบเวลาที่ส่งคืนจะเหมือนกับองค์ประกอบเวลาของ d
เลือก NEXT_DAY('01-Jan-2000','Monday') "วันจันทร์ที่ 1",
NEXT_DAY('01-พ.ย.-2547','วันอังคาร')+7 "วันอังคารที่ 2")
จากคู่;
วันจันทร์ที่ 1 วันอังคารที่ 203-ม.ค.-2543 09-พ.ย.-2547
กลม([,])
รอบวันที่ d ตามรูปแบบที่ระบุโดย fmt ซึ่งเป็นสตริง
ซยาดาเตะ
ฟังก์ชันไม่รับพารามิเตอร์และส่งกลับวันที่และเวลาปัจจุบัน
TRUNC([,])
ส่งกลับวันที่ d ในหน่วยที่ระบุโดย fmt
ฟังก์ชันการแปลงแถวเดียว ฟังก์ชันการแปลงแถวเดียวใช้เพื่อดำเนินการกับข้อมูลหลายประเภทและแปลงระหว่างประเภทข้อมูล
ชาร์ตวิด()
c สร้างสตริง และฟังก์ชันแปลง c เป็นชนิดข้อมูล RWID
เลือก test_id
จาก test_case
โดยที่ rowid=CHARTORWID('AAAA0SAACAAAALiAAA')
แปลง(,[,])
สตริงส่วนท้ายของ c, dset และ sset คือชุดอักขระสองตัว ฟังก์ชันจะแปลงสตริง c จากชุดอักขระ sset ไปเป็นชุดอักขระ dset
การตั้งค่าเริ่มต้นของ sset คือชุดอักขระของฐานข้อมูล
เฮกโตรอว์()
x คือสตริงเลขฐานสิบหก และฟังก์ชันจะแปลง x เลขฐานสิบหกให้เป็นชนิดข้อมูล RAW
RAWTOHEX()
x คือสตริงประเภทข้อมูล RAW และฟังก์ชันจะแปลงประเภทข้อมูล RAW เป็นประเภทข้อมูลเลขฐานสิบหก
โรวิทโทชาร์()
ฟังก์ชันแปลงชนิดข้อมูล ROWID เป็นชนิดข้อมูล CHAR
TO_CHAR([[,)
x เป็นประเภทข้อมูลหรือตัวเลข ฟังก์ชันแปลง x เป็นประเภทข้อมูลถ่านในรูปแบบที่ระบุโดย fmt
ถ้า x เป็นวันที่ nlsparm= NLS_DATE_LANGUAGE จะควบคุมภาษาที่ใช้สำหรับเดือนและวันที่ส่งคืน
ถ้า x เป็นตัวเลข nlsparm=NLS_NUMERIC_CHARACTERS จะถูกใช้เพื่อระบุตัวคั่นทศนิยมและหลักพัน รวมถึงสัญลักษณ์สกุลเงิน
NLS_NUMERIC_CHARACTERS="dg", NLS_CURRENCY="สตริง"
TO_DATE([,[,)
c แทนสตริง และ fmt แทนสตริงในรูปแบบพิเศษ ส่งคืน c ที่แสดงในรูปแบบ fmt และ nlsparm ระบุภาษาที่ใช้
ฟังก์ชันแปลงสตริง c เป็นชนิดข้อมูลวันที่
TO_MULTI_BYTE()
c แสดงถึงสตริง และฟังก์ชันแปลงอักขระที่ตัดทอนของ c ให้เป็นอักขระแบบหลายไบต์
TO_NUMBER([,[,)
c แทนสตริง fmt แทนสตริงในรูปแบบพิเศษ และค่าส่งคืนฟังก์ชันจะแสดงในรูปแบบที่ระบุโดย fmt
nlsparm แสดงถึงภาษา และฟังก์ชันจะส่งคืนตัวเลขที่แสดงด้วย c
TO_SINGLE_BYTE()
แปลงอักขระหลายไบต์ในสตริง c เป็นอักขระไบต์เดี่ยวที่เทียบเท่ากัน
ฟังก์ชันนี้ใช้เฉพาะเมื่อชุดอักขระฐานข้อมูลมีทั้งอักขระแบบไบต์เดี่ยวและหลายไบต์
ฟังก์ชันบรรทัดเดียวอื่นๆ
BFILENAME(,)
dir เป็นวัตถุประเภทไดเร็กทอรี และ file คือชื่อไฟล์ ฟังก์ชั่นส่งคืนตัวบ่งชี้ค่าตำแหน่ง BFILE ที่ว่างเปล่า
ฟังก์ชันใช้ในการเริ่มต้นตัวแปร BFILE หรือคอลัมน์ BFILE
ถอดรหัส(,,[,,,[])
x คือนิพจน์ m1 คือนิพจน์ที่ตรงกัน x จะถูกเปรียบเทียบกับ m1 ถ้า m1 เท่ากับ x แล้วจะส่งกลับ r1 มิฉะนั้น x จะถูกเปรียบเทียบกับ m2
และอื่นๆ m3,m4,m5....จนกว่าจะได้ผลลัพธ์กลับคืนมา
การถ่ายโอนข้อมูล(,[,[,[,]]])
x คือนิพจน์หรืออักขระ และ fmt แสดงถึงฐานแปด ทศนิยม เลขฐานสิบหก หรืออักขระตัวเดียว
ฟังก์ชันส่งคืนค่าประเภท VARCHAR2 ที่มีข้อมูลเกี่ยวกับการแสดงค่า x ภายใน
หากระบุ n1,n2 ไบต์ที่มีความยาว n2 โดยเริ่มจาก n1 จะถูกส่งคืน
EMPTY_BLOB()
ฟังก์ชันนี้ไม่มีพารามิเตอร์และส่งกลับตัวบ่งชี้ตำแหน่ง BLOB ที่ว่างเปล่า ฟังก์ชันที่ใช้ในการเริ่มต้นตัวแปร BLOB หรือคอลัมน์ BLOB
EMPTY_CLOB()
ฟังก์ชันนี้ไม่มีพารามิเตอร์และส่งคืนตัวบ่งชี้ตำแหน่ง CLOB ที่ว่างเปล่า ฟังก์ชันใช้ในการเริ่มต้นตัวแปร CLOB หรือคอลัมน์ CLOB
ที่ยิ่งใหญ่ที่สุด()
exp_list คือรายการนิพจน์ที่ส่งคืนนิพจน์ที่ใหญ่ที่สุด แต่ละนิพจน์จะถูกแปลงเป็นประเภทข้อมูลของนิพจน์แรกโดยปริยาย
หากนิพจน์แรกเป็นประเภทข้อมูลสตริงใดๆ ผลลัพธ์ที่ส่งคืนจะเป็นประเภทข้อมูล varchar2
การเปรียบเทียบที่ใช้ในเวลาเดียวกันเป็นการเปรียบเทียบประเภทที่ไม่มีช่องว่าง
น้อยที่สุด()
exp_list คือรายการนิพจน์ที่ส่งคืนนิพจน์ที่เล็กที่สุด โดยแต่ละนิพจน์จะถูกแปลงเป็นประเภทข้อมูลของนิพจน์แรกโดยปริยาย
หากนิพจน์แรกเป็นประเภทข้อมูลสตริงใดๆ ผลลัพธ์ที่ส่งคืนจะเป็นประเภทข้อมูล varchar2
การเปรียบเทียบที่ใช้ในเวลาเดียวกันเป็นการเปรียบเทียบประเภทที่ไม่มีช่องว่าง
UID
ฟังก์ชันนี้ไม่มีพารามิเตอร์และส่งกลับจำนวนเต็มที่ระบุผู้ใช้ฐานข้อมูลปัจจุบันโดยไม่ซ้ำกัน
ผู้ใช้
ส่งกลับชื่อผู้ใช้ของผู้ใช้ปัจจุบัน
USERENV()
อิงตาม opt return มีข้อมูลเซสชันปัจจุบัน ค่าตัวเลือกสำหรับการเลือกคือ:
บทบาท SYSDBA ตอบสนองในเซสชัน ISDBA และส่งกลับค่า TRUE
SESSIONID ส่งคืนตัวระบุเซสชันการตรวจสอบ
ENTRYID ส่งคืนตัวระบุรายการการตรวจสอบที่มีอยู่
INSTANCE ส่งคืนตัวระบุอินสแตนซ์หลังจากเชื่อมต่อเซสชันแล้ว
ค่านี้จะใช้เฉพาะเมื่อคุณใช้งานเซิร์ฟเวอร์ Parallel และมีหลายอินสแตนซ์
LANGUAGE ส่งคืนชุดอักขระของภาษา ภูมิภาค และการตั้งค่าฐานข้อมูล
LANG ส่งคืนตัวย่อ ISO ของชื่อภาษา
TERMINAL ส่งกลับตัวระบุระบบปฏิบัติการสำหรับเทอร์มินัลหรือคอมพิวเตอร์ที่ใช้โดยเซสชันปัจจุบัน
VSขนาด()
x คือนิพจน์ ส่งกลับจำนวนไบต์ที่แสดงภายในด้วย x
ฟังก์ชันกลุ่มใน SQL เรียกอีกอย่างว่าฟังก์ชันรวม โดยจะส่งกลับผลลัพธ์เดียวโดยอิงจากหลายแถว ไม่สามารถระบุจำนวนแถวที่แน่นอนได้
เว้นแต่จะมีการดำเนินการค้นหาและรวมผลลัพธ์ทั้งหมดไว้ด้วย ต่างจากฟังก์ชันแถวเดียวตรงที่ทุกแถวทราบในเวลาแยกวิเคราะห์
เนื่องจากความแตกต่างนี้ ฟังก์ชันกลุ่มจึงมีข้อกำหนดและลักษณะการทำงานที่แตกต่างกันเล็กน้อยจากฟังก์ชันแถวเดียว
ฟังก์ชันกลุ่ม (หลายแถว) เมื่อเปรียบเทียบกับฟังก์ชันแถวเดียว Oracle มีชุดฟังก์ชันแบบหลายแถวตามกลุ่มที่หลากหลาย
ฟังก์ชันเหล่านี้สามารถใช้ได้ใน select หรือมีส่วนคำสั่งของ select และมักใช้กับ GROUP BY เมื่อใช้ในการเลือกสตริงย่อย
AVG([{DISYINCT|ทั้งหมด}])
ส่งกลับค่าเฉลี่ยของค่าตัวเลข การตั้งค่าเริ่มต้นคือทั้งหมด
เลือก AVG(sal),AVG(ทั้งหมด sal),AVG(DISTINCT sal)
จาก scott.empAVG(SAL) AVG(SAL ทั้งหมด) AVG(DISTINCT SAL)1877.94118 1877.94118 1916.071413
นับ({*|DISTINCT|ทั้งหมด} )
ส่งกลับจำนวนแถวในแบบสอบถาม การตั้งค่าเริ่มต้นคือ ALL, * หมายถึงส่งคืนแถวทั้งหมด
สูงสุด([{แยก|ทั้งหมด}])
ส่งกลับค่าสูงสุดของรายการตัวเลือก ถ้า x เป็นชนิดข้อมูลสตริง ก็จะส่งกลับชนิดข้อมูล VARCHAR2
ถ้า X เป็นชนิดข้อมูล DATA จะส่งกลับวันที่ ถ้า X เป็นชนิดข้อมูลตัวเลข จะส่งกลับตัวเลข
โปรดทราบว่าค่าที่แตกต่างกันและไม่มีผลกระทบ ค่าสูงสุดควรเท่ากันสำหรับการตั้งค่าทั้งสอง
ขั้นต่ำ([{แตกต่างกัน|ทั้งหมด}])
ส่งกลับค่าต่ำสุดของรายการการเลือก
STDDEV([{แยก|ทั้งหมด}])
ส่งกลับค่าเบี่ยงเบนมาตรฐานของรายการของตัวเลือก โดยค่าเบี่ยงเบนมาตรฐานคือรากที่สองของค่าความแปรปรวน
ผลรวม([{แตกต่างกัน|ทั้งหมด}])
ส่งกลับผลรวมของค่าตัวเลขของรายการที่เลือก
ความแปรปรวน([{DISTINCT|ทั้งหมด}])
ส่งกลับค่าความแปรปรวนทางสถิติของรายการที่เลือก
ใช้ GROUP BY เพื่อจัดกลุ่มข้อมูล ตามชื่อเรื่อง ฟังก์ชันกลุ่มจะดำเนินการกับข้อมูลที่ถูกจัดกลุ่ม
เราบอกฐานข้อมูลถึงวิธีการจัดกลุ่มหรือจัดประเภทข้อมูลโดยใช้ GROUP BY เมื่อเราใช้ฟังก์ชันกลุ่มในส่วนคำสั่ง SELECT ของคำสั่ง SELECT
เราต้องวางคอลัมน์ที่จัดกลุ่มหรือไม่คงที่ไว้ใน GROUP BY clause หากไม่ได้ใช้ group by สำหรับการประมวลผลพิเศษ
จากนั้นการจำแนกประเภทเริ่มต้นคือการตั้งค่าผลลัพธ์ทั้งหมดให้เป็นหมวดหมู่เดียว
เลือก stat, counter(*) zip_count
จาก zip_codes GROUP BY state;
ST ZIP_COUNT ---------- AK 360AL 1212AR 1309AZ 768CA 3982
ในตัวอย่างนี้ เราใช้ฟิลด์สถานะเพื่อจัดประเภท หากเราต้องการเรียงลำดับผลลัพธ์ตาม zip_codes เราสามารถใช้คำสั่ง ORDER BY ได้
ส่วนคำสั่ง ORDER BY สามารถใช้ฟังก์ชันคอลัมน์หรือกลุ่มได้
เลือก stat, counter(*) zip_count
จาก zip_codes
จัดกลุ่มตามสถานะ เรียงลำดับตาม COUNT(*) DESC;
จำนวนเซนต์(*) ---------- NY 4312PA 4297TX 4123CA 3982
จำกัดข้อมูลที่จัดกลุ่มด้วย HAVING clause
ตอนนี้คุณรู้วิธีใช้ฟังก์ชันหลักในคำสั่ง SELECT และคำสั่งย่อย ORDER BY ของแบบสอบถามแล้ว ฟังก์ชันกลุ่มสามารถใช้ได้กับสตริงย่อยสองสตริงเท่านั้น
ไม่สามารถใช้ฟังก์ชันกลุ่มในสตริงย่อย WHERE ได้ ตัวอย่างเช่น แบบสอบถามต่อไปนี้ไม่ถูกต้อง:
ความผิดพลาด
SELECT sales_clerk,SUN(sale_amount)
จากยอดขายรวม
โดยที่ sales_dept='OUTSIDE' และ SUM(sale_amount)>10,000
จัดกลุ่มตามพนักงานขาย
ในคำสั่งนี้ ฐานข้อมูลจะไม่ทราบว่า SUM() คืออะไร เมื่อเราต้องการสั่งให้ฐานข้อมูลจัดกลุ่มแถวแล้วจำกัดเอาต์พุตของแถวที่จัดกลุ่ม
วิธีที่ถูกต้องคือการใช้คำสั่ง HAVING:
SELECT sales_clerk,SUN(sale_amount)
จากยอดขายรวม
โดยที่ sales_dept='นอก'
จัดกลุ่มตามพนักงานขาย
มียอดรวม(sale_amount)>10,000;
ฟังก์ชันที่ซ้อนกัน ฟังก์ชันสามารถซ้อนกันได้ ผลลัพธ์ของฟังก์ชันหนึ่งสามารถเป็นอินพุตของฟังก์ชันอื่นได้ ตัวถูกดำเนินการมีกระบวนการดำเนินการที่สืบทอดได้
แต่ลำดับความสำคัญของฟังก์ชันจะขึ้นอยู่กับตำแหน่งเท่านั้น และฟังก์ชันจะเป็นไปตามหลักการจากภายในสู่ภายนอกและจากซ้ายไปขวา
โดยทั่วไปเทคโนโลยีการซ้อนจะใช้สำหรับฟังก์ชันต่างๆ เช่น DECODE ที่สามารถใช้ในคำสั่งการตัดสินเชิงตรรกะ IF...THEN...ELSE