StepCoding

การใช้ SQL Expression และ Function

อ่าน [2854] หมวดหมู่: คำสั่ง SQL เบื้องต้น

Expression นั้นเป็น element หนึ่งในคำสั่ง SQL และมันสามารถเกิดขึ้นได้หลาย ๆ บริบท เช่น expression มักจะถูกกำหนดขึ้นบ่อย ๆ ในส่วนของ WHERE ในคำสั่ง SELECT, DELETE, UPDATE เพื่อระบุเรคอร์ดที่ต้องการดึงข้อมูล ลบ หรือแก้ไขข้อมูล แต่ expression ก็อาจจะถูกใช้ในกรณีอื่น ๆ ได้อีก เช่น ใช้เป็นการแสดงผลลัพธ์ใน field list ของคำสั่ง SELECT หรือในส่วนของ ORDER BY หรือ GROUP BY

การใช้งาน expression นั้นประกอบไปด้วยค่าคงที่ต่าง ๆ (number, string, time), ค่า NULL เพื่ออ้างอิงไปยังชื่อ field ของตารางนั้น ๆ และอาจจะใช้เป็น function ก็ได้ นอกจากนี้เรายังสามารถใช้ operator ต่าง ๆ ได้เช่น arithmetic, comparison, logical และ pattern-matching operation

ตัวอย่างการกำหนด expression

คำสั่งต่อไปนี้จะอ้างถึงชื่อ field ในตารางเพื่อเลือกแสดงชื่อประเทศ (name) และจำนวนประชากร (population) จากตาราง Country

SELECT Name, Population FROM Country;

เราสามารถสั่งให้แสดงค่าใดค่าหนึ่งได้โดยตรง โดยไม่ต้องดึงจากตารางก็ได้ เช่นคำสั่งต่อไปนี้จะกำหนดให้แสดงผลลัพธ์เป็นตัวเลขจำนวนเต็ม ทศนิยม และข้อความ

SELECT 14, -312.82, 'I am a string';

อีกวิธีหนึ่งในการแสดงผลข้อมูลโดยการใช้ function ซึ่งคำสั่งต่อไปนี้จะเรียกใช้ function ที่มันจะคืนค่าเป็นวันที่ปัจจุบัน และเวอร์ชันของ server เป็นรูปแบบ string

SELECT CURDATE(), VERSION();

การใช้งาน expression เหล่านี้สามารถนำมารวมกันเป็น complex expression ได้ เพื่อให้ได้ผลลัพธ์ตามที่เราต้องการ โดยคำสั่งต่อไปนี้จะสาธิตให้ผู้อ่านได้ดูครับ

SELECT Name,
TRUNCATE(Population/SurfaceArea, 2) AS 'people/sq. km',
IF(GNP > GNPOld, 'Increasing', 'Not increasing') AS 'GNP Trend'
FROM Country ORDER BY Name LIMIT 5;
Namepeople/sq. kmGNP Trend
Afghanistan34.84Not increasing
Albania118.31Increasing
Algeria13.21Increasing
American Samoa341.70Not increasing
Andorra166.66Not increasing

ในคำสั่ง SQL ด้านบนนี้ประกอบไปด้วย expression หลาย ๆ ประเภทดังนี้

  • ประเภทชื่อ field ประกอบไปด้วย Name, Population, SurfaceArea, GNP และ GNPOld
  • ประเภทค่าคงที่ ประกอบไปด้วย 'Increasing', 'Not increasing' และชื่อ alias เป็นค่าคงที่แบบ string
  • Function ประกอบไปด้วย TRUNCATE() ใช้เพื่อกำหนดรูปแบบอัตราส่วนของ population/area เป็นจุดทศนิยม 2 หลัก และ IF() เป็น function logical ที่ตรวจสอบ expression ใน argument ตัวแรก ถ้าเป็นจริงก็จะคืนค่าเป็น argument ตัวที่สอง แต่ถ้าเป็นเท็จจะคืนค่าเป็น argument ตัวที่สาม

ผู้สนับสนุน