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

วิธีเปลี่ยนค่า Null ใน MySQL โดยใช้คำสั่ง SELECT แตกต่างกันอย่างไร


มีตัวเลือกมากมายให้แทนที่ค่า NULL โดยใช้คำสั่ง select คุณสามารถใช้คำสั่ง CASE หรือ IFNULL() หรือ COALESCE()

กรณีที่ 1 − ใช้ IFNULL()

ไวยากรณ์ของ IFNULL() มีดังต่อไปนี้ −

เลือก IFNULL(yourColumnName,'yourValue') เป็น anyVariableName จาก yourTableName

กรณีที่ 2 − ใช้ COALESCE()

ไวยากรณ์ของ COALESCE() มีดังต่อไปนี้ −

เลือก COALESCE(yourColumnName,'yourValue') เป็น anyVariableName จาก yourTableName

กรณีที่ 3 − การใช้คำสั่ง CASE

ไวยากรณ์ของคำสั่ง CASE

เลือกกรณีเมื่อ yourColumnName เป็น NULL แล้ว 'yourValue'ELSE yourColumnName END AS anyVariableName FROM yourTableName

เพื่อให้เข้าใจสิ่งที่เรากล่าวถึงข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้ −

mysql> สร้างตาราง ReplaceNULLDemo -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> Name varchar(10), -> Marks int, -> PRIMARY KEY(Id) -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ ( 0.62 วินาที)

แทรกบางระเบียนในตารางโดยใช้คำสั่ง insert แบบสอบถามมีดังนี้ −

mysql> แทรกลงใน ReplaceNULLDemo (ชื่อ, เครื่องหมาย) ค่า ('Larry',90); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงใน ReplaceNULLDemo (ชื่อ, เครื่องหมาย) ค่า ('Carol', NULL);แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที)mysql> แทรกลงใน ReplaceNULLDemo (ชื่อเครื่องหมาย) ค่า ('David', NULL); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที) mysql> แทรกลงใน ReplaceNULLDemo (ชื่อ, เครื่องหมาย) ค่า ('Bob',67); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที) mysql> แทรกลงใน ReplaceNULLDemo (ชื่อเครื่องหมาย) ค่า ('Sam', 78); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.19 วินาที) mysql> แทรกลงในค่า ReplaceNULLDemo (ชื่อเครื่องหมาย) ('Mike', NULL); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.19 วินาที) mysql> แทรกลงใน ReplaceNULLDemo (ชื่อเครื่องหมาย) ค่า ('John', 98); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −

mysql> เลือก *จาก ReplaceNULLDemo;

ต่อไปนี้เป็นผลลัพธ์ -

<ก่อนหน้า>+----+-------+-------+| รหัส | ชื่อ | เครื่องหมาย |+----+-------+-------+| 1 | แลร์รี่ | 90 || 2 | แครอล | NULL || 3 | เดวิด | NULL || 4 | บ๊อบ | 67 || 5 | แซม | 78 || 6 | ไมค์ | NULL || 7 | จอห์น | 98 |+----+-------+-------+7 แถวในชุด (0.00 วินาที)

ให้เราแปลงค่า NULL เป็น 0

กรณีที่ 1 − ใช้ IFNULL()

แบบสอบถามมีดังนี้ −

mysql> เลือก ifnull(Marks,0) เป็น ReplacementOfNULLWith0 จาก ReplaceNULLDemo;

ต่อไปนี้เป็นผลลัพธ์ที่แสดง NULL แทนที่ด้วย 0 −

<ก่อนหน้า>+-----------------------+| ReplacementOfNULLWith0 |+--------------------------------------+| 90 || 0 || 0 || 67 || 78 || 0 || 98 |+-----------------------+7 แถวในชุด (0.00 วินาที)

กรณีที่ 2 − ใช้ COALESCE()

แบบสอบถามมีดังนี้ −

mysql> เลือกรวม (Marks,0) เป็น ReplacementOfNULLWith0 จาก ReplaceNULLDemo;

ต่อไปนี้เป็นผลลัพธ์ที่แสดง NULL แทนที่ด้วย 0 −

<ก่อนหน้า>+-----------------------+| ReplacementOfNULLWith0 |+--------------------------------------+| 90 || 0 || 0 || 67 || 78 || 0 || 98 |+-----------------------+7 แถวในชุด (0.00 วินาที)

กรณีที่ 3 − การใช้คำสั่ง CASE

แบบสอบถามมีดังนี้ −

mysql> เลือกกรณี -> เมื่อเครื่องหมายเป็นโมฆะแล้ว 0 -> อื่น ๆ เครื่องหมายสิ้นสุดเป็น ReplacementOfNULLWith0 -> จาก ReplaceNULLDemo;

ต่อไปนี้เป็นผลลัพธ์ที่แสดง NULL แทนที่ด้วย 0 −

<ก่อนหน้า>+-----------------------+| ReplacementOfNULLWith0 |+--------------------------------------+| 90 || 0 || 0 || 67 || 78 || 0 || 98 |+-----------------------+7 แถวในชุด (0.00 วินาที)