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

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


ต้องใช้ฟังก์ชัน 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)