หัวข้อที่5


ฟังก์ชัน


ฟังก์ชันที่ใช้ในภาษา 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



http://course.eau.ac.th/course/Download/0520207/public_html/lesson06/ms3t1.htm

ไม่มีความคิดเห็น:

แสดงความคิดเห็น