การเตรียมข้อมูล
mysql> CREATE TABLE DemoTable1849 (
ClientFirstName VARCHAR(20),
ClientLastName VARCHAR(20)
);
mysql> INSERT INTO DemoTable1849 VALUES('John', NULL);
mysql> INSERT INTO DemoTable1849 VALUES(NULL, 'Miller');
mysql> INSERT INTO DemoTable1849 VALUES(NULL, NULL);
mysql> INSERT INTO DemoTable1849 VALUES('Chris', 'Brown');
ข้อมูลก่อน
+-----------------+----------------+
| ClientFirstName | ClientLastName |
+-----------------+----------------+
| John | NULL |
| NULL | Miller |
| NULL | NULL |
| Chris | Brown |
+-----------------+----------------+
แทนที่ NULL ด้วย IFNULL
mysql> SELECT IFNULL(ClientFirstName, '') AS ClientFirstName,
IFNULL(ClientLastName, '') AS ClientLastName
FROM DemoTable1849;
ผลลัพธ์:
+-----------------+----------------+
| ClientFirstName | ClientLastName |
+-----------------+----------------+
| John | |
| | Miller |
| | |
| Chris | Brown |
+-----------------+----------------+
COALESCE: รองรับหลายค่า
-- เหมือน IFNULL แต่รองรับหลายค่า
SELECT COALESCE(ClientFirstName, ClientLastName, 'Unknown') FROM DemoTable1849;
-- ใช้กับหลายคอลัมน์
SELECT COALESCE(col1, ''), COALESCE(col2, ''), COALESCE(col3, '') FROM table;
ความแตกต่าง IFNULL vs COALESCE
| คุณสมบัติ | IFNULL | COALESCE |
|---|---|---|
| พารามิเตอร์ | 2 ค่า | หลายค่า (2+) |
| Standard | MySQL Specific | ANSI SQL Standard |
| Type Conversion | ตามค่าที่ 2 | หา Type ที่เข้ากันได้ทั้งหมด |