ใน innoDB ค่า NULL ใช้พื้นที่น้อยกว่าเมื่อเทียบกับสตริงว่าง นอกจากนี้ ความยาว NULL จะเป็นค่าว่างในขณะที่ความยาวของสตริงว่างคือ 0
เพื่อให้เข้าใจถึงสิ่งนี้ ตารางถูกสร้างขึ้นโดยใช้คำสั่ง create ซึ่งได้รับดังต่อไปนี้ -
mysql> สร้างตาราง DemoEmptyAndNULL-> (-> Message varchar(100)-> );ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.49 วินาที)
หลังจากสร้างตารางสำเร็จแล้ว เร็กคอร์ดที่ว่างเปล่าจะถูกแทรกลงในตารางโดยใช้คำสั่งของinsert ซึ่งมีรายละเอียดดังนี้ −
mysql> INSERT ลงในค่า DemoEmptyAndNULL (' '); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.17 วินาที)
หลังจากแทรกระเบียนแล้ว เราสามารถแสดงระเบียนทั้งหมดโดยใช้คำสั่ง select ซึ่งเป็นดังนี้ -
mysql> SELECT * จาก DemoEmptyAndNULL;
หลังจากดำเนินการค้นหาข้างต้น ผลลัพธ์ต่อไปนี้จะได้รับ -
<ก่อนหน้า>+---------+| ข้อความ |+---------+| |+---------+1 แถวในชุด (0.00 วินาที)ไวยากรณ์ในการตรวจสอบความยาวของสตริงว่างโดยใช้ฟังก์ชันนับมีดังต่อไปนี้ -
เลือกจำนวน (column_name) จาก yourTableName;
ไวยากรณ์ข้างต้นใช้เพื่อรับความยาวของสตริงว่างซึ่งกำหนดดังนี้ -
mysql> เลือกจำนวน (ข้อความ) จาก DemoEmptyAndNULL;
หลังจากดำเนินการค้นหาข้างต้น ต่อไปนี้คือผลลัพธ์ -
<ก่อนหน้า>+----------------+| นับ(ข้อความ) |+----------------+| 1 |+----------------+1 แถวในชุด (0.06 วินาที)จากผลลัพธ์ข้างต้น จะเห็นได้ชัดว่าความยาวของสตริงว่างคือ 1
ตอนนี้เราจะตรวจสอบความยาวของ NULL ขั้นแรก บันทึกที่ถูกแทรกลงในตารางจะถูกลบโดยใช้คำสั่ง delete ดังนี้ −
mysql> ลบออกจาก DemoEmptyAndNULL โดยที่ message=' '; Query OK ได้รับผลกระทบ 1 แถว (0.19 วินาที)
แบบสอบถามต่อไปนี้ใช้เพื่อตรวจสอบว่าไม่มีบันทึกในตารางในขณะนี้
mysql> SELECT * จาก DemoEmptyAndNULL ชุดว่าง (0.00 วินาที)
ตอนนี้เร็กคอร์ดที่มีค่า null ถูกแทรกลงในตารางดังนี้ −
mysql> INSERT ลงในค่า DemoEmptyAndNULL (); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.18 วินาที)
บันทึกจะแสดงโดยใช้คำสั่ง select และผลลัพธ์ที่ได้จะเป็นดังนี้ -
<ก่อนหน้า>+---------+| ข้อความ |+---------+| NULL |+---------+1 แถวในชุด (0.00 วินาที)ขณะนี้ มีเพียงระเบียนเดียวที่มีค่า Null ในตาราง เพื่อค้นหาความยาวของมันใช้แบบสอบถาม -
mysql> เลือกจำนวน (ข้อความ) จาก DemoEmptyAndNULL;
ต่อไปนี้เป็นผลลัพธ์ของแบบสอบถามข้างต้น -
<ก่อนหน้า>+----------------+| นับ(ข้อความ) |+----------------+| 0 |+----------------+1 แถวในชุด (0.00 วินาที)ผลลัพธ์ข้างต้นหมายความว่าการนับเป็น 0 สำหรับค่าว่าง
ให้เราตรวจสอบเวอร์ชันของ MySQL
mysql> เลือกเวอร์ชัน ();+-----------+| รุ่น() |+-----------+| 8.0.12 |+-----------+1 แถวในชุด (0.06 วินาที)
ดังนั้นจึงเป็นการดีกว่าที่จะใช้สตริงว่างสำหรับฐานข้อมูลเนื่องจากการยอมให้ค่า NULL บังคับให้ระบบทำงานพิเศษและไม่ให้ข้อมูลที่คุณต้องการ อย่างไรก็ตาม NULL จะไม่ส่งข้อยกเว้นใดๆ เมื่อดำเนินการฟังก์ชัน count()