ล่าสุดการพัฒนาเว็บบทเรียน
 

SQLฟังก์ชั่นโมฆะ


SQL ISNULL() , NVL() , IFNULL() และ COALESCE() ฟังก์ชั่น

ดูต่อไป "Products" ตาราง:

P_Id ชื่อผลิตภัณฑ์ ราคาต่อหน่วย UnitsInStock UnitsOnOrder
1 Jarlsberg 10.45 16 15
2 mascarpone 32.56 23
3 Gorgonzola 15.67 9 20

สมมติว่า "UnitsOnOrder" คอลัมน์เป็นตัวเลือกและอาจมีค่าเป็นศูนย์

เรามีคำสั่ง SELECT ต่อไปนี้:

SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products

ในตัวอย่างข้างต้นถ้าใด ๆ ของ "UnitsOnOrder" ค่าเป็นโมฆะผลเป็นโมฆะ

ไมโครซอฟท์ ISNULL() ฟังก์ชั่นที่ใช้ในการระบุวิธีการที่เราต้องการที่จะรักษาค่าเป็นศูนย์

NVL() , IFNULL() และ COALESCE() ฟังก์ชั่นนี้ยังสามารถนำมาใช้เพื่อให้บรรลุผลเดียวกัน

ในกรณีนี้เราต้องการค่าเป็นศูนย์เป็นศูนย์

ด้านล่างนี้ถ้า "UnitsOnOrder" เป็นโมฆะก็จะไม่เป็นอันตรายต่อการคำนวณเพราะ ISNULL() ส่งกลับศูนย์ถ้ามีค่าเป็นโมฆะ:

MS Access

SELECT ProductName,UnitPrice*(UnitsInStock+IIF(ISNULL(UnitsOnOrder),0,UnitsOnOrder))
FROM Products

SQL Server

SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products

Oracle

Oracle ไม่ได้มี ISNULL() ฟังก์ชั่น แต่เราสามารถใช้ NVL() ฟังก์ชั่นเพื่อให้บรรลุผลเดียวกัน

SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
FROM Products

MySQL

MySQL ไม่มี ISNULL() ฟังก์ชั่น แต่ผลงานนิด ๆ หน่อย ๆ ที่แตกต่างจากไมโครซอฟท์ ISNULL() ฟังก์ชั่น

ใน MySQL เราสามารถใช้ IFNULL() ฟังก์ชั่นเช่นนี้

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

หรือเราสามารถใช้ COALESCE() ฟังก์ชั่นเช่นนี้

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products