SQL การจัดการกับ NULL Value

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

การจัดการกับค่า NULL

การจัดการ NULL ที่สามารถพบได้บ่อยๆ

1. การตรวจสอบค่า NULL ด้วย IS NULL และ IS NOT NULL

ใช้เพื่อกรองข้อมูลที่เป็น NULL หรือไม่เป็น NULL

ตัวอย่าง

SQL
SELECT * FROM customers WHERE address IS NULL;

คำสั่งนี้จะเลือกข้อมูลจากตาราง customers ที่มีค่า address เป็น NULL

SQL
SELECT * FROM customers WHERE address IS NOT NULL;

คำสั่งนี้จะเลือกข้อมูลที่ address ไม่ใช่ NULL

2. การแทนค่า NULL ด้วยฟังก์ชัน COALESCE

COALESCE ใช้เพื่อแทนค่า NULL ด้วยค่าอื่น โดยสามารถระบุค่าหลายๆ ค่าไว้และจะเลือกค่าแรกที่ไม่ใช่ NULL

ตัวอย่าง

SQL
SELECT customer_id, COALESCE(address, 'No Address') AS address FROM customers;

คำสั่งนี้จะแสดง address ของลูกค้า ถ้าข้อมูล address เป็น NULL จะแทนที่ด้วย 'No Address'

3. การใช้ฟังก์ชัน IFNULL

คล้ายกับ COALESCE แต่ใช้ได้เพียงสองค่าเท่านั้น มักใช้กับ MySQL

ตัวอย่าง

SQL
SELECT customer_id, IFNULL(phone, 'No Phone') AS phone FROM customers;

คำสั่งนี้จะแสดง phone ของลูกค้า ถ้าข้อมูล phone เป็น NULL จะแทนที่ด้วย 'No Phone'

4. การใช้ฟังก์ชัน NVL (ใน Oracle)

ฟังก์ชันนี้ใช้กับ Oracle SQL เพื่อแทนที่ค่า NULL ด้วยค่าที่กำหนด

ตัวอย่าง

SQL
SELECT customer_id, NVL(salary, 0) AS salary FROM employees;

คำสั่งนี้จะแทนค่าของ salary ที่เป็น NULL ด้วย 0

5. การใช้ฟังก์ชัน NULLIF

NULLIF จะตรวจสอบสองค่า ถ้าค่าทั้งสองเท่ากัน จะคืนค่า NULL แต่ถ้าไม่เท่ากันจะคืนค่าของค่าแรก

ตัวอย่าง

SQL
SELECT customer_id, NULLIF(discount, 0) AS discount FROM orders;

คำสั่งนี้จะคืนค่า NULL ถ้า discount มีค่าเป็น 0

6. การคำนวณค่า NULL ในการทำ Aggregation Functions

Aggregation Functions เช่น SUM, COUNT, AVG, ฯลฯ จะไม่รวมค่าที่เป็น NULL ในการคำนวณ

ตัวอย่าง

SQL
SELECT SUM(salary) AS total_salary FROM employees;

คำสั่งนี้จะคำนวณรวมเฉพาะ salary ที่ไม่ใช่ NULL

แต่ถ้าอยากนับค่าที่เป็น NULL สามารถใช้ COUNT(*) แทนได้ ดังตัวอย่าง

SQL
SELECT COUNT(*) AS total_employees FROM employees;

คำสั่งนี้จะนับทุกแถวรวมทั้งแถวที่มี NULL

7. การใช้ CASE WHEN เพื่อจัดการกับ NULL

สามารถใช้ CASE WHEN ตรวจสอบค่า NULL และคืนค่าที่กำหนดได้

ตัวอย่าง

SQL
SELECT employee_id, 
       CASE 
          WHEN salary IS NULL THEN 'No Salary' 
          ELSE salary 
       END AS salary_info
FROM employees;

คำสั่งนี้จะตรวจสอบว่า salary เป็น NULL หรือไม่ ถ้าใช่จะแสดงว่า “No Salary” แต่ถ้าไม่ใช่จะแสดงค่า salary

8. การจัดการกับ NULL ในเงื่อนไขการเปรียบเทียบ

ค่าที่เป็น NULL ไม่สามารถใช้การเปรียบเทียบเช่น =, <, > ได้ การเปรียบเทียบจะให้ผลลัพธ์เป็น NULL

ตัวอย่าง

SQL
SELECT * FROM employees WHERE salary > 50000;  -- ไม่รวมค่าที่ salary เป็น NULL

คำสั่งนี้จะไม่เลือกแถวที่ salary เป็น NULL แม้ว่าจะไม่เขียน IS NOT NULL เพราะ NULL ไม่สามารถนำไปเปรียบเทียบได้

สรุป

การจัดการกับค่า NULL ใน SQL มีความหลากหลายและสามารถนำมาประยุกต์ใช้ได้หลายรูปแบบตามความต้องการ เช่น การตรวจสอบ การแทนที่ค่า การใช้ใน Aggregation Functions การใช้ในเงื่อนไขต่าง ๆ ซึ่งช่วยให้การจัดการข้อมูลในฐานข้อมูลมีประสิทธิภาพและครบถ้วนมากขึ้น

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