ฟังก์ชัน SQL
ฟังก์ชันที่ใช้ในภาษา 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)
เป็นกลุ่มฟังก์ชันที่ให้ผลของคำสั่งออกมาเพียง 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
|
2.ฟังก์ชันวันและเวลา (Date and tune functions)
เป็นกลุ่มฟังก์ชันที่แสดงข้อมูลออกมาเป็นวันและเวลา
ตัวอย่าง ตาราง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
|
3.ฟังก์ชันคณิตศาสตร์ (Arithmetic functions)
เป็นกลุ่มคำสั่งที่เกี่ยวกับการคำนวณทางเลขคณิต
ตัวอย่าง ตาราง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
|
4.ฟังก์ชันตัวอักขระ (Character functions)
เป็นฟังก์ชันที่ใช้สำหรับจัดการข้อมูลอักขระ โดยที่มีตัวแปรจริงเป็นชนิดอักขระหรือชนิดตัวเลข และให้ผลการคำนวณเป็นค่าอักขระหรือค่าตัวเลข
ตัวอย่างตาราง 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.ฟังก์ชันการแปลง (Conversion functions)
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
|
ไม่มีความคิดเห็น:
แสดงความคิดเห็น