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