Skip to content

1.4 Blank vs Empty vs NULL 🔥

มี 3 สิ่งที่ “ดูว่าง” เหมือนกัน แต่คอมพิวเตอร์ถือว่าเป็นคนละเรื่อง — ถ้าคุณแยกไม่ออก คุณจะนับข้อมูลผิด กรองข้อมูลพลาด และ JOIN ล้มเหลวแบบเงียบๆ

ลองนึกภาพ กล่อง:

  1. NULL / Blank (ว่างจริงๆ) — กล่องไม่มีอยู่เลย หรือมีแต่ไม่เคยใส่อะไร → ความหมาย: “เราไม่รู้ค่า”
  2. Empty string "" — กล่องมีอยู่ มีป้ายชื่อ แต่ข้างในว่างเปล่า → ความหมาย: “เรารู้ว่ามันคือ — ไม่มีอะไร”
  3. Zero 0 — กล่องมีของอยู่ และของนั้นคือเลข 0 → ความหมาย: “มีค่า และค่านั้นคือศูนย์”

ตัวอย่างในชีวิตจริง

Section titled “ตัวอย่างในชีวิตจริง”
สถานการณ์ค่าที่ควรเก็บทำไม
นักเรียนยังไม่กรอกเบอร์โทรNULLเราไม่รู้เบอร์
นักเรียนกรอกเบอร์แล้วลบออก"" (empty string)เรารู้ว่าเขาเลือกจะไม่ให้เบอร์
คะแนนสอบที่ยังไม่ตรวจNULLยังไม่มีค่า
คะแนนสอบที่ตรวจแล้วได้ 00มีค่า คือศูนย์คะแนน
นักเรียนไม่มี middle name""มีคำตอบ: “ไม่มี”

สร้างตารางนี้:

AB (คำอธิบาย)
1(เว้นว่าง)Blank cell
2="" (พิมพ์สูตร)Empty string
30Zero

ตรวจสอบ:

=ISBLANK(A1) → TRUE (ว่างจริง)
=ISBLANK(A2) → FALSE (!) — มี empty string อยู่
=ISBLANK(A3) → FALSE — มีค่า 0
=A1="" → TRUE
=A2="" → TRUE
=A3="" → FALSE — 0 ไม่ใช่ empty string
=LEN(A1) → 0
=LEN(A2) → 0
=LEN(A3) → 1 — "0" มีความยาว 1 ตัวอักษร
=COUNTBLANK(A1:A3) → 2 (!) — นับทั้ง blank และ empty string!

ดักตรง: ISBLANK("") = FALSE แต่ COUNTBLANK("") = 1

นี่คือสาเหตุที่คนนับข้อมูลผิดบ่อยมาก!

ลองเพิ่ม:

=COUNTA(A1:A3) → 2 — นับเซลล์ที่มี "อะไรสักอย่าง" (A2 กับ A3)

สังเกต: COUNTA นับ empty string ว่า “มีค่า” แต่ COUNTBLANK นับ empty string ว่า “ว่าง”

เปรียบเทียบ 3 แบบของ “ว่าง”

Section titled “เปรียบเทียบ 3 แบบของ “ว่าง””
Blank / NULLEmpty string ""Zero 0
Sheetsเซลล์ว่าง, ISBLANK=TRUE="", ISBLANK=FALSE0, ISBLANK=FALSE
PythonNone, NaN, pd.NA""0
SQLNULL, ใช้ IS NULL'', ใช้ = ''0
CNULL pointer"" (แค่ \0)0
ความหมายไม่รู้ค่ารู้ว่าว่างมีค่า = ศูนย์