SQL การใช้งานฟังก์ชัน COALESCE

ฟังก์ชัน COALESCE ใน SQL ใช้สำหรับคืนค่าตัวแรกที่ไม่เป็น NULL จากรายการของค่าในอาร์กิวเมนต์ที่กำหนดไว้ ฟังก์ชันนี้สามารถรองรับอาร์กิวเมนต์หลายตัว และจะทำการคืนค่าตัวแรกที่ไม่เป็น NULL หากไม่มีค่าใดที่ไม่เป็น NULL มันจะคืนค่าเป็น NULL

รูปแบบการใช้งาน

COALESCE(expression1, expression2, ..., expressionN)

expression1, expression2, และ expressionN คืออาร์กิวเมนต์ที่สามารถเป็นค่า คอลัมน์ หรือค่าที่คำนวณได้ ฟังก์ชันจะทำการเช็คเรียงตามลำดับจากซ้ายไปขวา หากพบค่าที่ไม่เป็น NULL จะคืนค่านั้นทันที

การใช้งานฟังก์ชัน COALESCE

เราจะสร้างตารางข้อมูลตัวอย่างชื่อว่า Employees โดยใช้คำสั่งดังนี้

SQL
CREATE TABLE Employees (
    employee_id INT,
    first_name VARCHAR(50),
    middle_name VARCHAR(50),
    last_name VARCHAR(50)
);

INSERT INTO Employees (employee_id, first_name, middle_name, last_name) VALUES
(1, 'John', NULL, 'Doe'),
(2, 'Jane', 'Alice', 'Smith'),
(3, 'Tom', NULL, 'Hanks'),
(4, 'Emily', 'Rose', NULL);

ในตัวอย่างนี้ ตาราง Employees มีคอลัมน์ที่เก็บชื่อพนักงาน โดยมี middle_name ที่อาจมีค่าที่เป็น NULL ได้

ทดลองดึงข้อมูลจากตาราง Employees โดยใช้คำสั่งดังนี้

SQL
SELECT employee_id, first_name, COALESCE(middle_name, '[No Middle Name]') AS middle_name, last_name
FROM Employees;

ฟังก์ชัน COALESCE จะคืนค่า '[No Middle Name]' แทนค่าที่เป็น NULL ในคอลัมน์ middle_name ซึ่งเป็นการแทนที่ค่า NULL ให้กับพนักงานที่ไม่มีชื่อกลาง

การใช้ COALESCE กับหลายอาร์กิวเมนต์

ในกรณีที่มีคอลัมน์หลายคอลัมน์และต้องการดึงค่าที่ไม่เป็น NULL แทนการแสดง NULL ตัวอย่างเช่น เมื่อเราต้องการดึงค่าที่ไม่เป็น NULL จากคอลัมน์ middle_name และ last_name

SQL
SELECT employee_id, first_name, COALESCE(middle_name, last_name, '[No Name Available]') AS preferred_name
FROM Employees;

ในตัวอย่างนี้ ฟังก์ชัน COALESCE จะคืนค่า middle_name หากไม่เป็น NULL แต่ถ้า middle_name เป็น NULL จะคืนค่า last_name แทน และถ้าทั้งสองคอลัมน์เป็น NULL จะคืนค่า '[No Name Available]'

การใช้ COALESCE ในการทำงานร่วมกับฟังก์ชันอื่น ๆ เช่น การคำนวณค่าคอมมิชชั่น

สร้างตารางเพิ่มเติมด้วยคำสั่งดังนี้

SQL
CREATE TABLE Sales (
    sale_id INT,
    employee_id INT,
    sale_amount DECIMAL(10, 2),
    commission_rate DECIMAL(5, 2)
);

INSERT INTO Sales (sale_id, employee_id, sale_amount, commission_rate) VALUES
(1, 1, 500.00, 0.10),
(2, 2, 700.00, NULL),
(3, 3, 400.00, 0.05),
(4, 4, 800.00, NULL);

ข้อมูลในตาราง Sales ที่เพิ่งสร้างขึ้นมาใหม่

การใช้ฟังก์ชัน COALESCE ร่วมกับการคำนวณค่าคอมมิชชั่น

SQL
SELECT sale_id, employee_id, sale_amount, COALESCE(commission_rate, 0.05) AS commission_rate, 
       sale_amount * COALESCE(commission_rate, 0.05) AS commission
FROM Sales;

ฟังก์ชัน COALESCE ถูกใช้เพื่อกำหนดอัตราค่าคอมมิชชั่น ถ้า commission_rate มีค่าเป็น NULL จะใช้อัตราค่าคอมมิชชั่นเริ่มต้นที่ 0.05 (หรือ 5%)

ผลลัพธ์

แชร์เรื่องนี้