ต้องใช้ฟังก์ชัน NULLIF() ของ MySQL
รูปแบบไวยากรณ์
SELECT NULLIF(yourColumnName, '') as anyVariableName FROM yourTableName;
ในรูปแบบนี้ หากเปรียบเทียบสตริงว่าง ('') กับสตริงว่าง ('') ผลลัพธ์จะเป็น NULL เสมอ หากเปรียบเทียบ NULL กับสตริงว่าง ก็จะได้ NULL เช่นกัน
ตัวอย่างการใช้งาน
สร้างตาราง:
mysql> create table ConvertEmptyStringToNULL ( Id int NOT NULL AUTO_INCREMENT, Name varchar(20), PRIMARY KEY(Id) ); Query OK, 0 rows affected (0.63 sec)
เพิ่มข้อมูล (มีทั้งค่าปกติ สตริงว่าง และ NULL):
mysql> insert into ConvertEmptyStringToNULL(Name) values('John'); Query OK, 1 row affected (0.22 sec)
mysql> insert into ConvertEmptyStringToNULL(Name) values(''); Query OK, 1 row affected (0.15 sec)
mysql> insert into ConvertEmptyStringToNULL(Name) values(NULL); Query OK, 1 row affected (0.14 sec)
mysql> insert into ConvertEmptyStringToNULL(Name) values(''); Query OK, 1 row affected (0.21 sec)
mysql> insert into ConvertEmptyStringToNULL(Name) values('Carol'); Query OK, 1 row affected (0.13 sec)
mysql> insert into ConvertEmptyStringToNULL(Name) values(NULL); Query OK, 1 row affected (0.70 sec)
แสดงข้อมูลทั้งหมด:
mysql> select *from ConvertEmptyStringToNULL;
ผลลัพธ์:
+----+-------+ | Id | Name | +----+-------+ | 1 | John | | 2 | | | 3 | NULL | | 4 | | | 5 | Carol | | 6 | NULL | +----+-------+ 6 rows in set (0.00 sec)
คำสั่งแปลงสตริงว่างเป็น NULL:
mysql> select NULLIF(Name, '') as EmptyStringNULL from ConvertEmptyStringToNULL;
ผลลัพธ์ (สตริงว่างกลายเป็น NULL):
+------------------+ | EmptyStringNULL | +------------------+ | John | | NULL | | NULL | | NULL | | Carol | | NULL | +------------------+ 6 rows in set (0.00 sec)