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

เปรียบเทียบค่า NULL และแสดงค่า 1 ในคอลัมน์ MySQL ใหม่

การใช้ฟังก์ชัน IF() ร่วมกับ IS NULL ใน MySQL

เมื่อต้องการตรวจสอบว่าคอลัมน์ใดมีค่า NULL และสร้างคอลัมน์ใหม่ที่แสดงค่า 1 สำหรับแถวที่เป็น NULL และ 0 สำหรับแถวที่มีข้อมูล เราสามารถใช้ฟังก์ชัน IF() ร่วมกับเงื่อนไข IS NULL ได้

ตัวอย่างการสร้างตารางและข้อมูลทดสอบ

mysql> CREATE TABLE DemoTable (
    Name VARCHAR(100),
    CountryName VARCHAR(100)
);
Query OK, 0 rows affected (0.70 sec)

เพิ่มข้อมูลตัวอย่าง

mysql> INSERT INTO DemoTable VALUES('Chris','US');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('Mike',NULL);
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable(Name) VALUES('David');
Query OK, 1 row affected (0.38 sec)
mysql> INSERT INTO DemoTable VALUES('Bob','AUS');
Query OK, 1 row affected (0.45 sec)

แสดงข้อมูลทั้งหมดในตาราง

mysql> SELECT * FROM DemoTable;

ผลลัพธ์:

+-------+-------------+
| Name  | CountryName |
+-------+-------------+
| Chris | US          |
| Mike  | NULL        |
| David | NULL        |
| Bob   | AUS         |
+-------+-------------+
4 rows in set (0.00 sec)

คำสั่ง SQL สำหรับเปรียบเทียบ NULL และสร้างคอลัมน์ใหม่

mysql> SELECT Name, CountryName, IF(CountryName IS NULL, 1, 0) AS CountDemo FROM DemoTable;

ผลลัพธ์:

+-------+-------------+-----------+
| Name  | CountryName | CountDemo |
+-------+-------------+-----------+
| Chris | US          | 0         |
| Mike  | NULL        | 1         |
| David | NULL        | 1         |
| Bob   | AUS         | 0         |
+-------+-------------+-----------+
4 rows in set (0.00 sec)

คำอธิบาย

  • IF(CountryName IS NULL, 1, 0) : ตรวจสอบว่า CountryName เป็น NULL หรือไม่ ถ้าใช่ให้คืนค่า 1 ไม่ใช่ให้คืนค่า 0
  • AS CountDemo : ตั้งชื่ออีเลียสสำหรับคอลัมน์ใหม่

วิธีนี้เหมาะสำหรับการสร้างแฟล็กหรือตัวบ่งชี้สำหรับข้อมูลที่หายไป (missing data) ในการรายงานหรือการวิเคราะห์ข้อมูลต่อไป