ฟังก์ชันที่ใช้ในภาษา SQLเป็นฟังก์ชัน ซึ่งเก็บประจำไว้กับภาษา SQL ภาษา SQL มีฟังก์ชันอยู่ 6 ประเภทคือ
1.ฟังก์ชันในการรวม (Aggregate functions)
2.ฟังก์ชันวันและเวลา (Date and tune functions)
3.ฟังก์ชันคณิตศาสตร์ (Arithmetic functions)
4.ฟังก์ชันตัวอักขระ (Character functions)
5.ฟังก์ชันการแปลง (Conversion functions)
6.ฟังก์ชันอื่นๆ (Miscellaneous functions)
เป็นกลุ่มฟังก์ชันที่ให้ผลของคำสั่งออกมาเพียง 1 คอลัมน์ ฟังก์ชันในการรวม(Aggregate Functions) เป็นกลุ่มฟังก์ชันที่ใช้กับข้อมูลที่เป็นตัวเลข ได้แก่ COUNT,SUM,AVG,MAXและ MIN
การใช้ฟังก์ชันในการรวมค่าต่าง ๆในภาษา SQL ดำเนินตามคำสั่งที่มีฟังก์ชันในการรวมค่า ผลของคำสั่งจะแสดงค่าเพียงค่าเดียว ฟังก์ชันเหล่านี้ได้แก่
COUNT เป็นคำสั่งที่สามารถใช้กับตารางหรือคอลัมน์ใด ๆ เพื่อนับจำนวนของแถวหรือคอลัมน์ซึ่งมีการใช้งาน 2 แบบดังนี้คือ
COUNT (*) เป็นคำสั่งใช้นับจำนวนแถวทั้งหมดในตารางซึ่งจะรวมจำนวนแถวที่ไม่มีค่า ( NULL) ด้วย
COUNT (DISTINCT คอลัมน์) เป็นคำสั่งใช้นับจำนวนแถวในตาราง จะไม่รวมค่าซ้ำและตำแหน่งที่ไม่มีค่า( NULL)
SUM เป็นคำสั่งการหาผลรวมของคอลัมน์ใดคอลัมน์หนึ่ง
AVG เป็นคำสั่งการหาค่าเฉลี่ยของข้อมูลในคอลัมน์ใดคอลัมน์หนึ่งโดยในคอลัมน์ที่ไม่มีค่าใดบรรจุอยู่ (NULL VALUE)จะไม่นำมาบรรจุอยู่ในการคำนวณ การใช้ฟั่งก์ชั่น AVG จะนำค่าทุกตัวในคอลัมน์มาคำนวณรวมทั้งตัวที่มีค่าซ้ำกันด้วย(ถ้าไม่ต้องการนำค่านั้นมาคำนวณสามารถใช้ DISTINCT ได้เช่น AVG (DISTINCT ชื่อคอลัมน์) เพื่อหาค่าเฉลี่ยโดยไม่ต้องนำค่าซ้ำกันมาคำนวณ
MAX เป็นคำสั่งในการหาค่าสูงสุดของข้อมูลของคอลัมน์ใดคอลัมน์หนึ่ง
MIN เป็นคำสั่งในการหาค่าต่ำสุดของข้อมูลของคอลัมน์ใดคอลัมน์หนึ่ง
1.1ฟังก์ชัน COUNT (X) เป็นฟังก์ชันที่ใช้ในการนับจำนวนแถวในคอลัมน์ (X)
ตัวอย่างตารางTEAMGAME
NAME |
AB |
HITS |
WALKS |
SINGLES |
DOUBLES |
TRIPLES |
HR |
JONES |
145 |
45 |
34 |
31 |
8 |
1 |
5 |
DONKNOW |
175 |
65 |
50 |
50 |
10 |
1 |
4 |
WORLEY |
157 |
49 |
35 |
35 |
8 |
3 |
3 |
DAVID |
187 |
70 |
48 |
48 |
4 |
0 |
17 |
HAMHOCKER |
50 |
12 |
10 |
10 |
2 |
0 |
0 |
CASEY |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
ตัวอย่างถ้าต้องการนับจำนวนแถวทั้งหมดในตาราง TEAMGAMEโดยนับเฉพาะแถวที่ HIT หารด้วย AB แล้วมีค่าน้อยกว่า 0.35 จะใช้คำสั่งดังนี้
SELECT COUNT(*)
FROM TEAMGAME
WHERE HITS/AB < .35;
ผลของคำสั่ง จะได้ผลลัพธ์เป็นจำนวนแถวที่ HIT หารด้วย AB แล้วมีค่าน้อยกว่า 0.35
COUNT (*) |
4 |
ตัวอย่าง ถ้าต้องการให้แสดงคอลัมน์ที่นับได้ชื่อ NUM_BELOW_350
SELECT COUNT(*) NUM_BELOW_350
FROM TEAMGAME
WHERE HITS/AB < .35;
ผลของคำสั่ง
NUM_BELOW_350 |
4 |
ตัวอย่าง ถ้าต้องการนับจำนวนคนที่มีเงื่อนไขให้ HIT หารด้วย AB แล้วมีค่าน้อยกว่า 0.35
SELECT COUNT(NAME) NUM_BELOW_350
FROM TEAMGAME
WHERE HITS/AB < .35;
ผลของคำสั่ง
NUM_BELOW_350 |
4 |
ตัวอย่าง ถ้าต้องการนับว่าข้อมูลในตาราง TEAMGAME มีจำนวนทั้งหมดกี่แถวจะใช้
SELECT COUNT(*)
FROM TEAMGAME;
ผลของคำสั่ง
COUNT(*) |
6 |
1.2 ฟังก์ชัน SUM (X) เป็นฟังก์ชันที่ใช้ในการหาค่ารวมของคอลัมน์ (X) ที่เก็บข้อมูลประเภทตัวเลข
ตัวอย่าง ถ้าต้องการหาผลรวมของคอลัมน์ SINGLES จากตาราง TEAMGAME โดยให้แสดงคอลัมน์ของผลรวมที่ได้ในชื่อ TOTAL .SINGLES
SELECT SUM(SINGLES) TOTAL_SINGLES
FROM TEAMGAME;
ผลของคำสั่ง
TOTAL_SINGLES |
174 |
ตัวอย่าง ถ้าต้องการหาผลรวมของคอลัมน์ SINGLES, DOUBLES, TRIPLES, HR จากตาราง TEAMGAME โดยให้แสดงคอลัมน์ของผลรวมที่ได้ในชื่อ TOTAL.SIGLES, TOTAL_DOUBLES, TOTAL_TRIPLES, TOTAL_HR ตามลำดับ
SELECT SUM(SINGLES) TOTAL_SINGLES, SUM(DOUBLES) TOTAL_DOUBLES,
SUM(TRIPLES) TOTAL_TRIPLES, SUM(HR) TOTAL_HR
FROM TEAMGAME;
ผลของคำสั่งที่ได้จะทำการรวมคะแนนทั้งหมดในคอลัมน์ SINGLES, DOUBLES, TRIPLES, HR แล้วแสดงออกมาเป็นคอลัมน์ TOTAL_SIGLES TOTAL_DOUBLES, TOTAL_TRIPLES, TOTAL_HR ตามลำดับดังนี้
TOTAL_SINGLES |
TOTAL_DOUBLES |
TOTAL_TRIPLES |
TOTAL_HR |
174 |
32 |
5 |
29 |
ตัวอย่าง ถ้าต้องการหาผลรวมของคอลัมน์ SINGLES, DOUBLES, TRIPLES, HR จากตาราง TEAMGAME ที่มีเงื่อนไขว่า HITS หารด้วย AB มากกว่าหรือเท่ากับ .300 โดยให้แสดงคอลัมน์ของผลรวมที่ได้ในชื่อ TOTAL_SIGLES, TOTAL_DOUBLES, TOTAL_TRIPLES, TOTAL_HR ตามลำดับ
SELECT SUM(SINGLES) TOTAL_SINGLES, SUM(DOUBLES) TOTAL_DOUBLES,
SUM(TRIPLES) TOTAL_TRIPLES, SUM(HR) TOTAL_HR
FROM TEAMGAME;
WHERE HITS/AB > = .300;
ผลของคำสั่งที่ได้จะทำให้รวมคะแนนทั้งหมดในคอลัมน์ต่าง ๆ เฉพาะแถวที่มีค่า HITS หารด้วย AB มากกว่าหรือเท่ากับ .300 แล้วแสดงผลในชื่อ TOTAL_SIGLES, TOTAL_DOUBLES, TOTAL_TRIPLES, TOTAL_HR ตามลำดับ
TOTAL_SINGLES |
TOTAL_DOUBLES |
TOTAL_TRIPLES |
TOTAL_HR |
164 |
30 |
5 |
29 |
ตัวอย่าง ถ้าต้องการผลรวมในคอลัมน์ NAME
SELECT SUM(NAME)
FROM TEAMGAME;
ผลของคำสั่งจะเกิด ERROR ขึ้นเนื่องจากในคอลัมน์ NAME มีประเภทของข้อมูลเป็นตัวอักขระฟังก์ชัน SUM จะใช้กับตัวเลขเท่านั้น ถ้าใช้ SUM กับตัวอักษรจะเกิด ERROR ดังตัวอย่าง
ERROR:
ORA-01722: invalid number
No rows selected
1.3 ฟังก์ชัน AVG (X) เป็นฟังก์ชันที่ใช้ในการหาค่าเฉลี่ยของคอลัมน์ (X) ที่เก็บข้อมูลประเภทตัวเลข
ตัวอย่าง ถ้าต้องการหาเฉลี่ยของ HITS ให้แสดงในชื่อ HIT_AVERAGE
SELECT AVG(HITS) HITS_AVERAGE
FROM TEAMGAME;
ผลของคำสั่งที่ได้จะแสดงค่าเฉลี่ยของ HITS ที่เกิดจากการนำค่าในแถวต่าง ๆ ในคอลัมน์ HIT มาบวกกันแล้วหารด้วยจำนวนแถว คือ 6
HITS_AVERAGE |
40.166666 |
1.4 ฟังก์ชัน MAX (X) เป็นฟังก์ชันที่ใช้ในการคำนวณหาค่าสูงสุดของคอลัมน์ (X)
ตัวอย่าง ถ้าต้องการหาว่าในคอลัมน์ HITS มีค่าสูงสุดเท่าใด
SELECT MAX(HITS)
FROM TEAMGAME;
ผลของคำสั่งที่ได้จะได้ว่า HITS มีค่าสูงสุดคือ 70 ดังนี้
MAX(HITS) |
70 |
ตัวอย่าง ถ้าต้องการหาว่าใครเป็นผู้ที่ได้ HITS สูงที่สุดโดยใช้คำสั่งดังนี้
SELECT NAME
FROM TEAMGAME
WHERE HITS = MAX(HITS);
ผลของคำสั่งจะเกิด ERROR เนื่องจากฟังก์ชันในการรวม (Aggregate function) มาใช้ในเงื่อนไขอนุประโยค WHERE ไม่ได้จะเกิด ERROR ขึ้นจากตัวอย่าง WHERE HITS = MAX(HITS); MAX(HITS) จะมาใช้ในเงื่อนไขอนุประโยค WHERE ไม่ได้ จากคำถามข้อนี้จะสามารถใช้ได้กับคำสั่ง CROUP BY และ HAVING ที่จะได้ศึกษาต่อไป
ERROR at line 3:
ORA 00934: group function is not allowed here
ตัวอย่าง การใช้ MAX กับประเภทของข้อมูลที่เป็นตัวอักขระ
SELECT MAX (NAME)
FROM TEAMGAME;
ผลของคำสั่งจากคำสั่งจะทำการหาชื่อของผู้ที่มีอักษร (A-Z) ตามลำดับใครที่มีอักษรลำดับมากที่สุดจะถูกแสดงออกมาเพียงแถวเดียว
MAX(NAME) |
WORLEY |
1.5 ฟังก์ชัน MIN (X) เป็นฟังก์ชันที่ใช้ในการหาค่าต่ำสุดของคอลัมน์ (X)
ตัวอย่าง ถ้าต้องการหาค่าต่ำสุดในคอลัมน์ AB
SELECT MIN(AB)
FROM TEAMGAME;
ผลของคำสั่งที่ได้จะได้ค่าต่ำสุดในคอลัมน์ AB ดังนี้
MIN (AB) |
1 |
ตัวอย่าง การใช้ MIN กับประเภทของข้อมูลที่เป็นตัวอักขระ
SELECT MIN(NAME)
FROM TEAMGAME;
ผลของคำสั่งจากคำสั่งจะทำการหาชื่อของผู้ที่มีอักษร (A-Z) ตามลำดับใครที่มีอักษรลำดับน้อยที่สุดจะถูกแสดงออกมาเพียงแถวเดียว
MIN (NAME) |
CASEY |
ตัวอย่าง ถ้าต้องการหาค่าต่ำสุดและสูงสุดในคอลัมน์ AB
SELECT MIN(AB), MAX(AB)
FROM TEAMGAME;
ผลของคำสั่งจะได้ค่าต่ำสุดและสูงสุดในคอลัมน์ AB ดังนี้
MIN (AB) |
MAX (AB) |
1 |
187 |
1.6 ฟังก์ชัน VARIANC (X) เป็นฟังก์ชันในการหาค่าส่วนเบี่ยงเบนมาตราฐานยกกำลัง2(S2) ในคอลัมน์ X
ตัวอย่าง ถ้าต้องการหาค่า VARIANC ของ คอลัมน์ HITS
SELECT VARIANCE(HITS)
FROM TEAMGAME;
ผลของคำสั่งที่ได้จะได้ค่า VARIANCE ในคอลัมน์ HITS
VARIANCE(HITS) |
802.96667 |
ตัวอย่าง ถ้าต้องการหาค่า VARIANCE ของคอลัมน์ NAME
SELECT VARIANCE(NAME)
FROM TEAMGAME;
ผลของคำสั่งจะเกิด ERRORขึ้นเนื่องจากฟังก์ชัน VARIANCE ไม่สามารถใช้กับข้อมูลที่เป็นตัวอักษรได้ดังนี้
ERROR:
ORA-01722: invalid number
No rows selected
1.7 ฟังก์ชัน STDDEV (X) หรือฟังก์ชันส่วนเบี่ยงเบนมาตราฐาน ส่วนเบี่ยงเบนมาตราฐาน คือ การหาค่ารากที่สองของผลรวมของความแตกต่างระหว่างข้อมูลดิบกับค่าเฉลี่ย ยกกำลังสอง (sum of squaresของผลต่าง) หารด้วยจำนวนข้อมูลทั้งหมดของคอลัมน์ X
ตัวอย่าง ถ้าต้องการหาส่วนเบี่ยงเบนมาตรฐานของคอลัมน์ HITS
SELECT STDDEV(HITS)
FROM TEAMGAME;
ผลของคำสั่งจะได้ส่วนเบี่ยงเบนมาตรฐานของคอลัมน์ HITS ดังนี้
STDDEV(HITS) |
28.336666 |
SELECT STDDEV(NAME)
FROM TEAMGAME;
ผลของคำสั่งจะเกิด ERROR ได้เนื่องจากฟังก์ชัน STDDEV ไม่สามารถใช้กับข้อมูลที่เป็นตัวอักษรได้
ERROR:
ORA-01722: invalid number
no rows selected
ตัวอย่าง ถ้าต้องการนับจำนวนแถวในคอลัมน์ หาค่าเฉลี่ยหาค่าสูงสุด ต่ำสุด หาค่าส่วนเบี่ยงเบนมาตรฐาน หาค่าว่าเรียน และหาผลรวมของคอลัมน์ AB
SELECT COUNT(AB),
AVG(AB),
MIN(AB),
MAX(AB),
STDEV(AB),
VARIANCE(AB),
SUM(AB),
FROM TEAMGAME;
ผลของคำสั่งที่ได้ค่าต่าง ๆ ตามลำดับดังนี้
COUNT(AB) |
AVG(AB) |
MIN(AB) |
MAX(AB) |
STDDEV(AB) |
VARIANCE(AB) |
SUM(AB) |
6 |
119.167 |
1 |
187 |
75.589 |
5712.97 |
715 |
เป็นกลุ่มฟังก์ชันที่แสดงข้อมูลออกมาเป็นวันและเวลา
ตัวอย่าง ตารางPROJECT
TASK |
STARTDATE |
ENDDATE |
KICKOFF MTG |
01-APR-2001 |
01-APR-2001 |
TECH SURVEY |
02-APR-2001 |
01-MAY-2001 |
USER MTGS |
15-MAY-2001 |
30-MAY-2001 |
DESIGN WIDGET |
01-JUN-2001 |
30-JUN-2001 |
CODE WIDGET |
01-JUL-2001 |
02-SEP-2001 |
TESTING |
03-SEP-2001 |
17-JAN-2002 |
2.1 ฟังก์ชัน ADD_MONTHS (X,Y) เป็นฟังก์ชันที่ต้องการบวกจำนวนเดือน (Y) เข้าไปในข้อมูล คอลัมน์ X
ตัวอย่าง ถ้าต้องการให้เลื่อนเวลาในคอลัมน์ ENDDATE ให้มีกำหนดเวลาเพิ่มขึ้นอีก 2 เดือน โดยให้ผลลัพธ์แสดงคอลัมน์ TASK, STARTDATE และคอลัมน์ ENDDATE ให้แสดงเป็นคอลัมน์ ORIGINALEND ส่วนกำหนดเวลาที่บวกเพิ่มไปอีก 2 เดือน ให้แสดงในคอลัมน์ ADD_MONTH
SELECT TASK,STARTDATE, ENDDATE ORIGINAL_END,
ADD_MONTHS(ENDDATE,2)
FROM PROJECT;
ผลของคำสั่งจะได้ ADD_MONTHS เพิ่มมาอีก 1 คอลัมน์ ซึ่งเกิดจากข้อมูลในคอลัมน์ ENDDATE บวกอีก 2 เดือน
TASK |
STARTDATE |
ORIGINAL |
ADD_MONTH |
KICKOFF MTG |
01-APR-2001 |
01-APR-2001 |
01-JUN-2001 |
TECH SURVEY |
02-APR-2001 |
01-MAY-2001 |
01-JUN-2001 |
USER MTGS |
15-MAY-2001 |
30-MAY-2001 |
30-JUN-2001 |
DESIGN WIDGET |
01-JUN-2001 |
30-JUN-2001 |
31-AUG-2001 |
CODE WIDGET |
01-JUL-2001 |
02-SEP-2001 |
02-NOV-2001 |
TESTING |
03-SEP-2001 |
17-JAN-2002 |
17-MAR-2002 |
ตัวอย่าง ถ้าต้องการหาว่างานใดบ้างที่มีระยะการทำงานไม่เกิน 1 เดือนจะใช้คำสั่งดังนี้
SELECT TASK, TASKS_SHORTER_THAN_ONE_MONTH
FROM PROJECT
WHERE ADD_MONTHS(STARTDATE, 1) > ENDDATE;
ผลของคำสั่งจะได้คอลัมน์ TASKS_SHORTER_THAN_ONE_MONTH ที่แสดงงานที่มีระยะเวลาการทำงานไม่เกิน 1 เดือน
TASKS_SHORTER_THAN_ONE_MONTH |
KICKOFF MTG |
TECH SURVEY |
USER MTGS |
DESIGN WIDGET |
2.2 ฟังก์ชัน LAST_DAY (X) เป็นฟังก์ชันที่แสดงวันสุดท้ายของเดือนในคอลัมน์ (X)
ตัวอย่าง เช่นต้องการแสดงวันสุดท้ายของเดือนจะใช้คำลั่งดังนี้
SELECT ENDDATE, LAST_DAY(ENDDATE)
FROM PROJECT;
ผลของคำสั่งที่ได้จะแสดงในคอลัมน์ LAST_DAY (ENDDATE) ที่แสดงวันสุดท้ายของเดือนในคอลัมน์ ENDDATE
ENDDATE |
LAST_DAY(ENDDATE) |
01-APR-2001 |
30-APR-2001 |
01-MAY-2001 |
31-MAY-2001 |
30-MAY-2001 |
31-MAY-2001 |
30-JUN-2001 |
30-JUN-2001 |
02-SEP-2001 |
30-SEP-2001 |
17-JAN-2002 |
31-JAN-2002 |
2.3 ฟังก์ชัน MONTHS_BETWEEN (X,Y) เป็นฟังก์ชันที่คำนวณค่าระหว่าง X และ Y โดยมีหน่วยเป็นเดือน
ถ้าต้องการคำนวณหาค่าระหว่างคอลัมน์ STARIDATE กับคอลัมน์ ENDDATE ว่ามีระยะเวลาห่างกันกี่เดือน
SELECT TASK, STARTDATE, ENDDATE, MONTHS_BETWEEN(STARTDATE, ENDDATE)
DURATION
FROM PROJECT;
ผลของคำสั่งที่ได้คอลัมน์ DURATION ที่ติดค่าลบเนื่องจากใช้คอลัมน์ STARTDATE ซึ่งมีค่าน้อยกว่าคอลัมน์ ENDDATE เป็นค่าเริ่มต้น
TASK |
STARTDATE |
ENDDATE |
DURATION |
KICKOFF MTG |
01-APR-2001 |
01-APR-2001 |
0 |
TECH SURVEY |
02-APR-2001 |
01-MAY-2001 |
-.9677419 |
USER MTGS |
15-MAY-2001 |
30-MAY-2001 |
-.483871 |
DESIGN WIDGET |
01-JUN-2001 |
30-JUN-2001 |
-.9354839 |
CODE WIDGET |
01-JUL-2001 |
02-SEP-2001 |
-2.032258 |
TESTING |
03-SEP-2001 |
17-JAN-2002 |
-4.451613 |
เป็นการหาค่าเดือนเหมือนดังตัวอย่างข้างต้น แต่จะนำคอลัมน์ ENDDATE มาเป็นค่าเริ่มต้น
SELECT TASK, STARTDATE, ENDDATE,
MONTHS_BETWEEN(ENDDATE ,STARTDATE) DURATION
FROM PROJECT;
ผลของคำสั่งที่ได้คอลัมน์ DURATION เป็นบวกเพราะคอลัมน์ ENDDATE ที่เป็นค่าเริ่มต้นมีค่ามากกว่าคอลัมน์ STARIDATE
TASK |
STARTDATE |
ENDDATE |
DURATOPN |
KICKOFF MTG |
01-APR-2001 |
01-APR-2001 |
0 |
TECH SURVEY |
02-APR-2001 |
01-MAY-2001 |
.96774194 |
USER MTGS |
15-MAY-2001 |
30-MAY-2001 |
.48387097 |
DESIGN WIDGET |
01-JUN-2001 |
30-JUN-2001 |
.93548387 |
CODE WIDGET |
01-JUL-2001 |
02-SEP-2001 |
2.0322581 |
TESTING |
03-SEP-2001 |
17-JAN-2002 |
4.4516129 |
ตัวอย่าง ถ้าต้องการหาว่าค่าที่เริ่มก่อนวันที่ 15 MAY 2001
SELECT *
FROM PROJECT
WHERE MONTHS_BETWEEN(19 MAY 2001,STARTDATE) > 0;
ผลของคำสั่งที่ได้จะแสดงงานโครงการที่เริ่มก่อน วันที่ 19 MAY 2001
TASK |
STARTDATE |
ENDDATE |
KICKOFF MTG |
01-APR-2001 |
01-APR-2001 |
TECH SURVEY |
02-APR-2001 |
01-MAY-2001 |
USER MTGS |
15-MAY-2001 |
30-MAY-2001 |
เป็นกลุ่มคำสั่งที่เกี่ยวกับการคำนวณทางเลขคณิต
ตัวอย่าง ตารางNUMBERS;
A |
B |
3.1415 |
4 |
-45 |
.707 |
5 |
9 |
-57.667 |
42 |
15 |
55 |
-7.2 |
5.3 |
3.1 ฟังก์ชัน ABS(X)เป็นฟังก์ชันในการหาค่าสมบูรณ์ของ X
ต้องการหาค่าสมบูรณ์ในคอลัมน์ A
SELECT ABS(A) ABSOLUTE_VALUE
FROM NUMBERS;
ผลของคำสั่ง
ABSOLUTE_VALUE |
3.1415 |
45 |
5 |
57.667 |
15 |
7.2 |
3.2 ฟังก์ชัน CEIL(X) and FLOOR(X)
ฟังก์ชัน CEIL (X) เป็นฟังก์ชันที่ให้ค่าตัวเลขจำนวนเต็มที่มีค่ามากว่าหรือเท่ากับค่าในคอลัมน์ (X)
ฟังก์ชัน FLOORเป็นฟังก์ชันที่ให้ค่าตัวเลขจำนวนเต็มที่พิจารณาจากค่าในคอลัมน์ X ถ้าหลังจุดทศนิยมมีค่ามากว่า 5 ก็จะให้ค่าเลขจำนวนเต็มที่มากขึ้น แต่ถ้าหลังจุดทศนิยมมีค่าน้อยกว่า 5 จะให้ค่าตัวเลขที่มีค่าน้อยลง
ตัวอย่าง ถ้าต้องการหาค่าตัวเลขจำนวนเต็มที่มีค่ามากกว่าหรือเท่ากับค่าในคอลัมน์ B
SELECT B, CEIL(B) CEILING
FROM NUMBERS;
ผลของคำสั่งจะได้คอลัมน์ CEILING ที่แสดงตัวเลขจำนวนเต็มที่มีค่ามากกว่าหรือเท่ากับค่าในคอลัมน์ B
B |
CEILING |
4 |
4 |
.707 |
1 |
9 |
9 |
42 |
42 |
55 |
55 |
5.3 |
6 |
ตัวอย่าง ถ้าต้องการหาค่าตัวเลขจำนวนเต็มในคอลัมน์ A โดยถ้าหลังจุดทศนิยมมีอยู่มากกว่า 5 ก็จะให้ค่าเลขจำนวนเต็มที่มากขึ้น แต่ถ้าหลังจุดทศนิยมมีค่าน้อยกว่า 5 ก็จะให้ค่าตัวเลขที่มีค่าน้อยลง
SELECT A, FLOOR(A) FLOOR
FROM NUMBERS;
ผลของคำสั่งจะได้คอลัมน์ FLOOR ที่มีค่ามากกว่า
A |
FLOOR |
3.1415 |
3 |
.45 |
-45 |
5 |
5 |
-57.667 |
-58 |
15 |
15 |
-7.2 |
-8 |
3.3 ฟังก์ชัน COS(X), COSH(X), SIN(X), SINH(X), TAN(X), และ TANH(X) เป็นฟังก์ชันทางตรีโกณที่หาค่า cosine,hyperbolic cosine,sine,hyperbolic sine,tangent,hyperbolic tangent ที่มีค่า X เป็นองศาเรเดียน(radians,) โดย 360 degrees = 2 pile radians
ตัวอย่าง ถ้าต้องการหาค่า COS ของมุมในคอลัมน์ A
SELECT A, COS(A)
FROM NUMBERS;
ผลของคำสั่งจะได้ของ (A) ที่มีค่าดังนี้
A |
COS(A) |
3.1415 |
-1 |
-45 |
.52532199 |
5 |
.28366219 |
-57.667 |
.437183 |
15 |
-.7596879 |
.7.2 |
.60835131 |
3.4 ฟังก์ชัน EXP (X)เป็นฟังก์ชันหาค่า e ยกกำลัง X
ตัวอย่าง ถ้าต้องการหาค่า e ยกกำลังของข้อมูลในคอลัมน์ A
SELECT A, EXP(A)
FROM NUMBERS;
ผลของคำสั่งจะได้คอลัมน์ EXP(A) ที่เป็นข้อมูลในข้อมูลคอลัมน์ A e ยกกำลังตัวเลข
A |
EXP(A) |
3.1415 |
23.138549 |
-45 |
2.863E-20 |
5 |
148.41316 |
-57.667 |
9.027E-26 |
15 |
3269017.4 |
.7.2 |
.00074659 |
3.5 ฟังก์ชัน LN(X) และ LOG(X)
ฟังก์ชัน LN เป็นการหาค่า natural log ของ X
ฟังก์ชัน LOG เป็นการหาค่า log ฐาน10 ของ X
ตัวอย่าง ถ้าต้องการหา natural log ของคอลัมน์ A
SELECT A, LN(A)
FROM NUMBERS;
ผลของคำสั่งจะเกิด ERROR ขึ้นเนื่องจากแถวที่ 2 และ 4 ของตาราง NUMBERS มีค่าเป็นลบ ซึ่งถ้าข้อมูลมีค่าเป็นลบจะหาค่าไม่ได้
ERROR:
ORA-01428: argument -45 is out of range
จากตัวอย่างถ้าทำการยกกำลัง 2 ข้อมูลในคอลัมน์ A ค่าของข้อมูลที่เป็นลบอยู่เมื่อถูกยกกำลัง 2 จะกลายเป็นบวกจากนั้นจึงทำการหาค่า LN ข้อมูลในคอลัมน์ A
SELECT A, LN(ABS(A))
FROM NUMBERS;
ผลของคำสั่งในคอลัมน์ LN (ABS(A) จะได้ค่า natural log ที่เกิดจากคอลัมน์ A ยกกำลัง 2
A |
LN (ABS(A)) |
3.1415 |
1.1447004 |
-45 |
3.8066625 |
5 |
1.6094379 |
-57.667 |
4.0546851 |
15 |
2.7080502 |
.7.2 |
1.974081 |
จะหาค่า Log ฐาน 10 ในคอลัมน์ B จากตาราง NUBMERS
SELECT B, LOG(B, 10)
FROM NUMBERS;
ผลของคำสั่งในคอลัมน์ LOG(B,10) จะให้ค่า log ฐาน 10 ของคอลัมน์ B
B |
LOG(B,10) |
4 |
1.660964 |
.707 |
-6.640962 |
9 |
1.0479506 |
42 |
.61604832 |
55 |
.57459287 |
5.3 |
1.3806894 |
3.6 ฟังก์ชัน MOD(X,Y) เป็นฟังก์ชันที่แสดงเศษที่เกิดข้อมูล X หารด้วย Y
ตัวอย่าง ถ้าต้องการหาเศษของ A หารด้วย B โดยแสดงคอลัมน์ A,B และคอลัมน์เศษที่เหลือ
SELECT A, B, MOD(A,B)
FROM NUMBERS;
ผลของคำสั่งจะได้คอลัมน์ MOD(A,B) เป็นคอลัมน์ที่แสดงเศษที่เกิดจากข้อมูลในคอลัมน์ A หารด้วย B
A |
B |
MOD(A,B) |
3.1415 |
4 |
3.1415 |
-45 |
.707 |
-.459 |
5 |
9 |
5 |
-57.667 |
42 |
-15.667 |
15 |
55 |
15 |
-7.2 |
5.3 |
-1.9 |
3.7 ฟังก์ชัน POWER (X,Y) เป็นฟังก์ชันในการยกกำลัง โดย X เป็นเลขฐานและ Y จะเป็นเลขยกกำลัง
SELECT A, B, POWER(A,B)
FROM NUMBERS;
ผลของคำสั่งจะเกิด ERROR เพราะargument ในแถวที่ 2 ตัวที่เป็นเลขยกกำลังต้องมีค่าเป็นจำนวนเต็ม
ERROR:
ORA-01428: ARGUMENT -45 is out of range
จะทำให้เลขยกกำลังมีค่าเป็นเลขจำนวนเต็มบวกโดยใช้ฟังก์ชัน CEILก่อนแล้วจึงจะนำมายกกำลัง
SELECT A, CEIL(B), POWER(A,CEIL(B))
FROM NUMBERS;
ผลของคำสั่งในคอลัมน์ CELI (B) เป็นค่าของข้อมูลในคอลัมน์ B ที่มีค่าเป็นจำนวนเต็มและเมื่อยกกำลังแล้วจะมีค่าปรากฎในคอลัมน์ POWER (A,CEIL(B)
A |
CEIL(B) |
POWER(A,CEIL(B)) |
3.1415 |
4 |
97.3976 |
-45 |
1 |
-45 |
5 |
9 |
1953125 |
-57.667 |
42 |
9.098E+73 |
15 |
55 |
4.842E+64 |
-7.2 |
6 |
139314.07 |
3.8 ฟังก์ชัน SIGN (X) เป็นฟังก์ชันที่
- ให้ค่าเป็น 1 ถ้า X มีค่าน้อยกว่า 0
- ให้ค่าเป็น 0 ถ้า X มีค่าเท่ากับ 0
- ให้ค่าเป็น 1 ถ้า X มีค่ามากกว่า 0
ตัวอย่าง ถ้าต้องการหาฟังก์ชัน SIGN ในการหาค่าข้อมูลในคอลัมน์ A
SELECT A, SIGN(A)
FROM NUMBERS;
ผลของคำสั่ง
A |
SIGN (A) |
3.1415 |
1 |
-45 |
-1 |
5 |
1 |
-57.667 |
-1 |
15 |
1 |
-7.2 |
-1 |
0 |
0 |
ถ้าต้องการใช้ฟังก์ชัน SIGN ที่มีค่า 1 ในคอลัมน์ A
SELECT A
FROM NUMBERS
WHERE SIGN(A) =1;
ผลของคำสั่งจะแสดงข้อมูลในคอลัมน์ A ที่เมื่อใช้ฟังก์ชัน SIGN แล้วมีค่าเป็น 1
A |
3.1415 |
5 |
15 |
3.9 ฟังก์ชัน SQRT (X) เป็นฟังก์ชันในการหาค่ารากที่ 2 ของ X
ตัวอย่าง ถ้าต้องการหารากที่ที่ 2 ของข้อมูลในคอลัมน์ A
SELECT A, SQRT(A)
FROM NUMBERS;
ผลของคำสั่งจะเกิด ERROR เนื่องจากไม่สามารถหาค่ารากที่ 2 ของตัวเลขที่มีค่าเป็นลบได้ดังนี้
ERROR:
ORA-01428: ARGUMENT -45 is out of range
ตัวอย่าง ถ้านำข้อมูลในคอลัมน์ A มาหาค่าสมบูรณ์แล้วจึงนำไปหาค่ารากที่ 2
SELECT ABS(A), SQRT(ABS(A))
FROM NUMBERS;
ผลของคำสั่งที่ได้จะได้ค่าสมบูรณ์ของข้อมูลในคอลัมน์ A และได้ค่ารากที่ 2 ของค่าสมบูรณ์ในคอลัมน์ A
ABS(A) |
SQRT(ABS(A)) |
3.1415 |
1.7724277 |
45 |
-16.7082039 |
5 |
12.236068 |
57.667 |
7.5938791 |
15 |
3.8729833 |
7.2 |
2.6832816 |
0 |
0 |
เป็นฟังก์ชันที่ใช้สำหรับจัดการข้อมูลอักขระ โดยที่มีตัวแปรจริงเป็นชนิดอักขระหรือชนิดตัวเลข และให้ผลการคำนวณเป็นค่าอักขระหรือค่าตัวเลข
ตัวอย่างตาราง CHARACTERS
LASTNAME |
FIRSTNAME |
M |
CODE |
PURVIS |
KELLY |
A |
32 |
TAYLOR |
CHUCK |
J |
67 |
CHRISTINE |
LAURA |
C |
65 |
ADAMS |
FESTER |
M |
87 |
COSTALES |
ARMANDO |
A |
77 |
KONG |
MAJOR |
G |
52 |
4.1 ฟังก์ชัน CHR เป็นฟังก์ชันสำหรับเปลี่ยนนิพจน์อักขระให้เป็นรหัส ASCII ค่าที่ได้จากฟังก์ชันนี้จะเป็นค่ารหัส ASCII
ตัวอย่าง ถ้าต้องการเปลี่ยนค่าตัวเลขในคอลัมน์ CODE ให้เป็นตัวอักษร
SELECT CODE, CH(CODE)
FROM CHARACTERS;
ผลของคำสั่ง
CODE |
CH |
32 |
|
67 |
C |
65 |
A |
87 |
W |
77 |
M |
52 |
4 |
4.2 ฟังก์ชัน CONCAT (X,Y) เป็นฟังก์ชันในการรวมอักขระ (X และ Y) เข้าด้วยกัน
ตัวอย่าง ถ้าต้องการรวมคอลัมน์ FIRSINAME กับ LASTNAME ไว้ด้วยกัน
SELECT CONCAT(FIRSTNAME, LASTNAME) FIRST AND LAST NAMES
FROM CHARACTERS;
ผลของคำสั่งจะได้นำคอลัมน์ FIRSTNAME และ LASTNAME มารวมกันแสดงให้เห็นในคอลัมน์ FIRST AND LASTNAMES
FIRST AND |
LAST NAMES |
KELLY |
PURVIS |
CHUCK |
TAYLOR |
LAURA |
CHRISTINE |
FESTER |
ADAMS |
ARMANDO |
COSTALES |
MAJOR |
KONG |
4.3 ฟังก์ชัน INITCAP (<string>) เป็นฟังก์ชันที่เปลี่ยนค่าตัวอักขระ (string) ให้ตัวแรกเป็นอักขระตัวใหญ่แล้วตามด้วยอักขระตัวเล็ก
ถ้าต้องการเปลี่ยนให้เป็นอักษรตัวใหญ่ในคอลัมน์ FIRSTNAME
SELECT FIRSTNAME BEFORE, INITCAP(FIRSTNAME) AFTER
FROM CHARACTERS;
ผลของคำสั่งจะทำการเปลี่ยน
BEFORE |
AFTER |
KELLY |
Kelly |
CHUCK |
Chuck |
LAURA |
Laura |
FESTER |
Fester |
ARMANDO |
Armando |
MAJOR |
Major |
4.4 ฟังก์ชัน LOWER (<string>) and UPPER (<string>)
ฟังก์ชัน LOWER (<string>) เป็นฟังก์ชัน ที่เปลี่ยนตัวอักขระ (<string>) เป็นอักขระตัวเล็ก
ฟังก์ชัน UPPER (<string>) เป็นฟังก์ชัน ที่เปลี่ยนตัวอักขระ (<string>) เป็นอักขระตัวใหญ่
ตัวอย่าง ถ้าต้องการเปลี่ยนแปลงตัวอักขระในคอลัมน์ FIRSTNAME จากอักขระตัวเล็กให้เป็น
อักขระตัวใหญ่ทุกแถว ถ้าใช้คำสั่ง UPDATE ดังนี้
UPDATE CHARACTERS
SET FIRSTNAME = kelly
WHERE FIRSTNAME = KELLY;
ผลของคำสั่งจะทำการเปลี่ยนแปลงข้อมูลได้คำสั่งละ 1 แถวเท่านั้น
1 rows update. |
จากตัวอย่างถ้าใช้ฟังก์ชัน LOWER หรือ UPPER ในการเปลี่ยนแปลงตัวอักขระจะใช้คำสั่งเพียงครั้งเดียวก็สามารถเปลี่ยนแปลงข้อมูลได้ทุกแถวดังนี้
SELECT FIRSTNAME, UPPER(FIRSTNAME), LOWER(FIRSTNAME)
FROM CHARACTERS;
ผลของคำสั่งจะทำการเปลี่ยนแปลงข้อมูลในคอลัมน์ FIRSTNAME ให้เป็นอักษรตัวใหญ่และเล็กตามลำดับดังนี้
FIRSTNAME |
UPPER(FIRSTNAME) |
LOWER(FIRSTNAME} |
Kelly |
KELLY |
kelly |
CHUCK |
CHUCK |
chuck |
LAURA |
LAURA |
laura |
FESTER |
FESTER |
fester |
ARMANDO |
ARMANDO |
armando |
MAJOR |
MAJOR |
major |
4.7 ฟังก์ชัน REPLACE (<string>,X,Y) เป็นฟังก์ชันในการแทนค่าอักขระ X โดยการค้นหาตัวอักขระที่ต้องการแทนที แล้วแทนที่ด้วยอักขระ Y ที่ต้องการ
ตัวอย่าง ถ้าต้องการค้นหาอักขระ ST โดยไม่แทนที่ด้วยอักขระใดๆ
คำสั่งต้องการหาตัวอักษร ST ในคอลัมน์ LASTNAME โดยไม่ต้องแทนที่ด้วยตัวอักษรใด
SELECT LASTNAME, REPLACE(LASTNAME, ST) REPLACEMENT
FROM CHARACTERS;
ผลของคำสั่งจะทำให้ในแถวที่ 3 และแถวที่ 6 ที่มีคอลัมน์ LASTNAME ที่มีอักษร ST อยู่จะถูกตัดทิ้งไป
LASTNAME |
REPLACEMENT |
PURVIS |
PURVIS |
TAYLOR |
TAYLOR |
CHRISTINE |
CHRIINE |
ADAMS |
ADAMS |
COSTALES |
COALES |
KONG |
KONG |
ตัวอย่าง ถ้าต้องการหาตัวอักษร ST ในคอลัมน์ LASTNAME แล้วแทนที่ด้วย **
SELECT LASTNAME, REPLACE(LASTNAME, ST, **) REPLACEMENT
FROM CHARACTERS;
ผลของคำสั่งจะทำให้ในแถวที่ 3 และแถวที่ 6 ในคอลัมน์ LASTNAME ที่มีอักษร ST อยู่จะถูกแทนที่ด้วย **
LASTNAME |
REPLACEMENT |
PURVIS |
PURVIS |
TAYLOR |
TAYLOR |
CHRISTINE |
CHRI**INE |
ADAMS |
ADAMS |
COSTALES |
CO**ALES |
KONG |
KONG |
4.8 ฟังก์ชัน SUBSTR (<string>,x,y) เป็นฟังก์ชันที่นำตัวอักษร (<string>) ในตำแหน่งที่ x
ตัวอย่าง ถ้าต้องกแสดงอักษรตั้งแต่ตำแหน่งที่ 2 มาแสดง 3 ตำแหน่ง ของคอลัมน์ FIRSTNAME
SELECT FIRSTNAME, SUBSTR(FIRSTNAME,2,3)
FROM CHARACTERS;
ผลของคำสั่งจะเห็นว่าในคอลัมน์ FIRSTNAME จะแสดงอักษรออกมา 3 ตัว แม้แต่ชื่อคอลัมน์ก็จะแสดงเพียง 3 ตัวเช่นเดียวกัน
FIRSTNAME |
SUB |
Kelly |
Ell |
CHUCK |
HUC |
LAURA |
AUR |
FESTER |
EST |
ARMANDO |
RMA |
MAJOR |
AJO |
ตัวอย่าง ถ้าต้องการให้แสดงตั้งแต่ตัวอักษรในตำแหน่งที่ 3 โดยไม่จำกัดว่าให้แสดงก็ตัวอักษร
SELECT FIRSTNAME, SUBSTR(FIRSTNAME,3)
FROM CHARACTERS;
ผลของคำสั่งจะแสดงอักษรในคอลัมน์ FIRSTNAME ตั้งแต่ตัวที่ 3 ทั้งหมด
FIRSTNAME |
SUBSTR(FIRSTN |
Kelly |
Lly |
CHUCK |
UCK |
LAURA |
URA |
FESTER |
STER |
ARMANDO |
MANDO |
MAJOR |
JOR |
5.1ฟังก์ชัน TO_CHAR จะทำการแลง data type ที่เป็นตัวเลขให้เป็นตัวอักษร
SELECT TESTNUM, TO_CHAR(TESTNUM)
FROM CONVERSIONS;
ผลของคำสั่ง
TESTNUM |
TO_CHAR(TESTNUM) |
95 |
95 |
23 |
23 |
68 |
68 |
SELECT TESTNUM, LENGTH(TO_CHAR(TESTNUM))
FROM CONVERSIONS;
ผลของคำสั่งจะทำการนับความยาวของตัวเลขที่แปลงเป็นตัวอักษรแล้ว
TESTNUM |
LEGTH(TO_CHAR(TESTNUM)) |
95 |
2 |
23 |
2 |
68 |
2 |