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

แทนที่ค่า NULL ด้วยสตริงว่างในหลายคอลัมน์พร้อมกัน MySQL

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

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

กรณีใช้งาน

  • แสดงผลใน Report/UI ไม่ต้องการคำว่า "NULL"
  • Export ข้อมูล CSV/Excel
  • Concatenation: CONCAT(IFNULL(first,''), ' ', IFNULL(last,''))
  • JSON Output: หลีกเลี่ยง null literal
คุณสมบัติIFNULLCOALESCE
พารามิเตอร์2 ค่าหลายค่า (2+)
StandardMySQL SpecificANSI SQL Standard
Type Conversionตามค่าที่ 2หา Type ที่เข้ากันได้ทั้งหมด