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

COALESCE() คืนค่าว่าง ('') ถ้าอาร์กิวเมนต์แรกเป็น Empty String

Empty String ≠ NULL

'' (Empty string) เป็น ค่าที่ไม่ใช่ NULL → COALESCE คืนค่าว่างทันที

ตัวอย่าง

mysql> SELECT COALESCE('', 'Ram');
+--------------------+
| COALESCE('', 'Ram') |
+--------------------+
|                    |
+--------------------+

การอธิบาย

  • อาร์กิวเมนต์แรก = '' (Empty string, ไม่ใช่ NULL)
  • COALESCE เจอค่า Non-NULL แรก → คืน ''
  • ไม่ไปตรวจ 'Ram' แล้ว

ข้อสังเกต

  • Empty string ('') และ NULL ต่างกันจริง
  • IS NULL = TRUE สำหรับ NULL, FALSE สำหรับ ''
  • ='' = TRUE สำหรับ '', FALSE สำหรับ NULL
  • ถ้าต้องการข้าม Empty string ต้องใช้ NULLIF(str, '') ก่อน

เทคนิค: ข้ามทั้ง NULL และ Empty

SELECT COALESCE(NULLIF(col, ''), 'Default') FROM table;
-- NULLIF คืน NULL ถ้า col = '' แล้ว COALESCE จะข้ามไป 'Default'