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

MySQL: ควรใช้ NULL หรือ Empty String ดี กรณีไหนใช้แบบไหน

การเลือกใช้ NULL หรือ Empty String ('') ใน MySQL ขึ้นอยู่กับกรณีการใช้งาน แต่โดยทั่วไป Empty String มักสะดวกกว่า สำหรับการตรวจสอบและเปรียบเทียบ

ความแตกต่างหลัก

คุณสมบัติNULLEmpty String ('')
ความหมายไม่มีค่า / ไม่ทราบค่ามีค่าแต่เป็นสตริงว่าง
การตรวจสอบต้องใช้ IS NULL / IS NOT NULLใช้ = '' / != '' ได้เลย
ฟังก์ชัน COUNT()COUNT(NULL) = 0COUNT('') = 1
ฟังก์ชัน LENGTH()LENGTH(NULL) = NULLLENGTH('') = 0
การจัดเก็บใช้พื้นที่น้อยกว่า (1 bit ใน NULL bitmap)ใช้พื้นที่ตามความยาว + overhead

ตัวอย่างการทดสอบ

-- ตรวจสอบ COUNT
SELECT COUNT(NULL);     -- ผลลัพธ์: 0
SELECT COUNT('');       -- ผลลัพธ์: 1

-- ตรวจสอบ LENGTH
SELECT LENGTH(NULL);    -- ผลลัพธ์: NULL
SELECT LENGTH('');      -- ผลลัพธ์: 0

แนวทางปฏิบัติที่แนะนำ

  • ใช้ NULL เมื่อ: ค่าจริงๆ ไม่มีอยู่ / ไม่ได้กรอก / ไม่ระบุ (เช่น วันเกิดที่ไม่ได้บอก)
  • ใช้ Empty String เมื่อ: ค่าอาจจะว่างได้ตามปกติ (เช่น ชื่อเล่นที่ไม่มี)
  • หลีกเลี่ยง: ผสมใช้ NULL และ '' ในคอลัมน์เดียวกัน เพราะจะทำให้ Query ซับซ้อน
  • Default Value: ตั้งค่า DEFAULT ให้ชัดเจน (DEFAULT NULL หรือ DEFAULT '')

หมายเหตุเพิ่มเติม

ใน Oracle Empty String จะถูกแปลงเป็น NULL อัตโนมัติ แต่ใน MySQL ทั้งสองค่านั้นแยกจากกันชัดเจน