NULL: ค่าความจริงลำดับที่สาม
ทำความเข้าใจความหมายของ NULL เหตุใด NULL จึงไม่เท่ากับสิ่งใดเลย (แม้แต่ตัวมันเอง) และตรรกะแบบสามค่ามีผลต่อส่วนคำสั่ง WHERE อย่างไร
NULL: ค่าความจริงลำดับที่สาม เป็นบทเรียน SQL Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน
NULL คืออะไร
NULL หมายถึงข้อมูลที่ไม่ทราบค่าหรือขาดหาย ไม่ใช่ศูนย์ ไม่ใช่สตริงว่าง และไม่ใช่ค่าเท็จ แต่คือการไม่มีค่าอย่างชัดเจน
NULL ไม่เท่ากับสิ่งใดเลย (แม้แต่ตัวมันเอง)
นี่คือกฎที่ทำให้ทุกคนสับสน
SELECT NULL = NULL; -- NULL (not true!)
SELECT NULL = 0; -- NULL
SELECT NULL = ''; -- NULL
SELECT NULL <> 1; -- NULLใช้ IS NULL และ IS NOT NULL
เมื่อต้องการตรวจสอบ NULL คุณต้องใช้เพรดิเคตพิเศษ IS NULL และ IS NOT NULL:
SELECT email FROM users WHERE deleted_at IS NULL; -- active users
SELECT email FROM users WHERE deleted_at IS NOT NULL; -- deleted usersตรรกะสามค่า
ตรรกะบูลีนของ SQL มีสามค่า ได้แก่ TRUE, FALSE และ UNKNOWN (NULL)
| A | B | A AND B | A OR B |
|---|---|---|---|
| TRUE | NULL | NULL | TRUE |
| FALSE | NULL | FALSE | NULL |
| NULL | NULL | NULL | NULL |
WHERE จะตัดแถวที่เพรดิเคตเป็น NULL ออก
หาก WHERE x = 5 ให้ผลเป็น NULL สำหรับแถวหนึ่ง (เพราะ x เป็น NULL) แถวนั้นจะไม่ถูกส่งคืน มีเพียงแถวที่เพรดิเคตเป็น TRUE เท่านั้นที่ถูกเก็บไว้
-- Suppose age is NULL for some users:
SELECT * FROM users WHERE age >= 18;
-- Users with NULL age are NOT returned, even though we
-- don't actually know they're under 18.กับดัก NULL ของ NOT IN
การสอบถามนี้จะส่งคืนศูนย์แถว หากชื่อใด ๆ ในการสอบถามย่อยเป็น NULL
SELECT * FROM users
WHERE name NOT IN (SELECT excluded_name FROM blocklist);
-- If blocklist has a NULL row, the whole NOT IN evaluates to NULL
-- → no rows returned
-- Safer:
SELECT * FROM users u
WHERE NOT EXISTS (
SELECT 1 FROM blocklist b WHERE b.excluded_name = u.name
);COALESCE: แทนที่ NULL ด้วยค่าเริ่มต้น
COALESCE จะส่งคืนอาร์กิวเมนต์แรกที่ไม่ใช่ NULL:
SELECT id, COALESCE(full_name, email, 'Anonymous') AS display_name
FROM users;
-- If full_name is NULL, use email; if that's NULL too, use 'Anonymous'.NULLIF: ตรงกันข้าม
NULLIF(a, b) จะส่งคืน NULL เมื่อ a = b มิฉะนั้นจะส่งคืน a เหมาะสำหรับการปฏิบัติต่อค่าพิเศษ เช่น '' หรือ 0 ให้เป็น NULL
SELECT NULLIF(price, 0) FROM products;
-- Returns NULL when price is 0, useful for AVG() that should ignore zeros.NULL ในฟังก์ชันรวม
ฟังก์ชันรวม (ยกเว้น COUNT(*)) จะข้ามอินพุตที่เป็น NULL:
-- Suppose: prices = [10, 20, NULL, 30]
SELECT COUNT(*) FROM products; -- 4 (counts rows)
SELECT COUNT(price) FROM products; -- 3 (counts non-NULL prices)
SELECT AVG(price) FROM products; -- 20 (60 / 3, not 60 / 4)
SELECT SUM(price) FROM products; -- 60ลำดับการจัดเรียง NULL
ตามค่าเริ่มต้น PostgreSQL จะจัดเรียง NULL ไว้ท้ายสุดเมื่อเรียงจากน้อยไปมาก และไว้ต้นสุดเมื่อเรียงจากมากไปน้อย คุณสามารถเปลี่ยนลักษณะนี้ได้:
SELECT * FROM users ORDER BY last_login_at DESC NULLS LAST;การจัดเก็บ NULL เทียบกับสตริงว่าง
ตัดสินใจสำหรับแต่ละคอลัมน์ว่า '' เป็นค่าที่ใช้ได้หรือไม่ หากไม่ใช่ ให้ใช้ NULL เพื่อหมายถึง "ไม่มีค่า" หากใช่ NULL จะมีความหมายอื่น เช่น "ยังไม่ได้สอบถาม"
ใช้อย่างสม่ำเสมอ อย่าผสมทั้งสองแบบไว้ในคอลัมน์เดียวกัน
ทบทวน
NULL เป็นค่าความจริงประเภทหนึ่งโดยเฉพาะ
- ตรวจสอบด้วย
IS NULLอย่าใช้= NULL - ตัวกรอง WHERE จะเก็บไว้เฉพาะแถวที่เป็น TRUE
- ฟังก์ชันรวมจะข้ามอินพุตที่เป็น NULL
COALESCEคือเครื่องมือที่ช่วยคุณได้
ตรวจสอบความเข้าใจอย่างรวดเร็ว
SELECT NULL = NULL; จะส่งคืนอะไร
คำถามที่พบบ่อย
บทเรียน “NULL: ค่าความจริงลำดับที่สาม” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “NULL: ค่าความจริงลำดับที่สาม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “NULL: ค่าความจริงลำดับที่สาม”
ทำความเข้าใจความหมายของ NULL เหตุใด NULL จึงไม่เท่ากับสิ่งใดเลย (แม้แต่ตัวมันเอง) และตรรกะแบบสามค่ามีผลต่อส่วนคำสั่ง WHERE อย่างไร คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “NULL: ค่าความจริงลำดับที่สาม” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน SQL Academy นี้ได้ไหม
ได้ บทเรียน SQL Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- RDBMS คืออะไร และเหตุใดตารางจึงสำคัญ
- คีย์หลักและความไม่ซ้ำกัน
- NULL: ค่าความจริงลำดับที่สาม
- ภาพรวมชนิดข้อมูล: INT VARCHAR DATE BOOLEAN