Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

แทนที่ค่า NULL ด้วยค่าเฉพาะในคอลัมน์ MySQL ด้วย IFNULL

การเตรียมข้อมูล

mysql> CREATE TABLE DemoTable1878 (FirstName VARCHAR(20));

mysql> INSERT INTO DemoTable1878 VALUES('Chris'), (NULL), ('David'), (NULL);

ข้อมูลก่อน

+-----------+
| FirstName |
+-----------+
| Chris     |
| NULL      |
| David     |
| NULL      |
+-----------+

ใช้ IFNULL แทนที่ NULL

mysql> SELECT IFNULL(FirstName, 'Robert') FROM DemoTable1878;

ผลลัพธ์:

+----------------------------+
| ifnull(FirstName,'Robert') |
+----------------------------+
| Chris                      |
| Robert                     |
| David                      |
| Robert                     |
+----------------------------+

IFNULL Syntax

IFNULL(expr1, expr2)
-- คืนค่า expr1 ถ้าไม่ใช่ NULL, ไม่งั้น expr2

IFNULL vs COALESCE vs CASE

วิธีSyntaxความยืดหยุ่น
IFNULLIFNULL(col, 'default')2 ค่า, MySQL Only
COALESCECOALESCE(col1, col2, 'default')หลายค่า, Standard SQL
CASECASE WHEN col IS NULL THEN 'd' ELSE col ENDComplex Logic ได้

กรณีใช้งานจริง

  • Report/Export: แทน NULL ด้วย '-' หรือ 'N/A'
  • Concatenation: CONCAT(IFNULL(first,''), ' ', IFNULL(last,''))
  • Calculation: IFNULL(price, 0) * quantity
  • Display: IFNULL(phone, 'Not provided')

อัปเดตข้อมูลจริง (ไม่ใช่แค่ SELECT)

-- เปลี่ยน NULL เป็น 'Unknown' จริงในตาราง
UPDATE DemoTable1878 SET FirstName = 'Unknown' WHERE FirstName IS NULL;

-- หรือใช้ IFNULL ใน UPDATE (MySQL รองรับ)
UPDATE DemoTable1878 SET FirstName = IFNULL(FirstName, 'Unknown');

ข้อควรระวัง

  • IFNULL/COALESCE ใน SELECT ไม่เปลี่ยนข้อมูลในตาราง
  • Index: WHERE IFNULL(col, '') = '' ไม่ใช้ Index ได้
  • Data Type: ค่า Default ต้องเข้ากับ Data Type ของ Column