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

MySQL สามารถแปลงสตริงว่างเป็น NULL โดยอัตโนมัติได้หรือไม่


คุณต้องใช้ฟังก์ชัน NULLIF() จาก MySQL ไวยากรณ์มีดังนี้:

เลือก NULLIF(yourCoumnName,’ ’) เป็น anyVariableName จาก yourTableName;

ในไวยากรณ์ข้างต้น หากคุณเปรียบเทียบสตริงว่าง ( ' ') กับสตริงว่าง ( ' ') ผลลัพธ์จะเป็น NULL เสมอ อย่างไรก็ตาม หากคุณเปรียบเทียบกับ NULL กับสตริงว่าง ( ' ') ผลลัพธ์จะเป็น NULL เสมอ

เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้:

mysql> สร้างตาราง ConvertEmptyStringToNULL -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> ชื่อ varchar (20), -> คีย์หลัก (Id) -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.63 วินาที) 

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

mysql> แทรกลงใน ConvertEmptyStringToNULL(Name) values('John');Query OK, 1 แถวได้รับผลกระทบ (0.22 sec)mysql> แทรกลงใน ConvertEmptyStringToNULL(Name) values(''); Query OK, 1 แถวได้รับผลกระทบ (0.15) วินาที) mysql> แทรกลงใน ConvertEmptyStringToNULL (ชื่อ) ค่า (NULL); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที) mysql> แทรกลงใน ConvertEmptyStringToNULL (ชื่อ) ค่า (''); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.21 วินาที) mysql> แทรกลงในค่า ConvertEmptyStringToNULL (ชื่อ) ('Carol'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที) mysql> แทรกลงใน ConvertEmptyStringToNULL (ชื่อ) ค่า (NULL) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.70 วินาที)

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

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

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

<ก่อนหน้า>+----+-------+| รหัส | ชื่อ |+---+-------+| 1 | จอห์น || 2 | || 3 | NULL || 4 | || 5 | แครอล || 6 | NULL |+----+-------+6 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามเพื่อแปลงสตริงว่างเป็น NULL:

mysql> เลือก NULLIF(Name,'') เป็น EmptyStringNULL จาก ConvertEmptyStringToNULL;

ต่อไปนี้เป็นผลลัพธ์ที่แสดง NULL แทนที่สตริงว่าง:

<ก่อนหน้า>+-----------------+| EmptyStringNULL |+-----------------+| จอห์น || NULL || NULL || NULL || แครอล || NULL |+------------------+6 แถวในชุด (0.00 วินาที)