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

ตั้งค่า 1 สำหรับค่า NOT NULL ใน MySQL ด้วย IF()

ใช้ฟังก์ชัน IF() ร่วมกับ IS NOT NULL เพื่อคืนค่า 1 เมื่อคอลัมน์ไม่ใช่ NULL และ 0 เมื่อเป็น NULL

Syntax

SELECT IF(column_name IS NOT NULL, 1, 0) AS result FROM table_name;

ตัวอย่างการใช้งาน

1. ทดสอบค่าคงที่

mysql> select if('' is not NULL, 1, 0);

ผลลัพธ์: 1 (สตริงว่าง '' ไม่ใช่ NULL)

2. สร้างตารางและเพิ่มข้อมูล

mysql> create table DemoTable1915 ( Name varchar(20) ); Query OK, 0 rows affected (0.00 sec)

mysql> insert into DemoTable1915 values('Chris'); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1915 values(''); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1915 values('David'); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1915 values(NULL); Query OK, 1 row affected (0.00 sec)

ข้อมูลทั้งหมด:

mysql> select * from DemoTable1915;
+-------+
| Name  |
+-------+
| Chris |
|       |
| David |
| NULL  |
+-------+
4 rows in set (0.00 sec)

3. ใช้ IF() ตรวจสอบ NOT NULL

mysql> select if(Name IS NOT NULL, 1, 0) as Result from DemoTable1915;

ผลลัพธ์:

+--------+
| Result |
+--------+
|      1 |  -- Chris (NOT NULL)
|      1 |  -- ''    (Empty string ไม่ใช่ NULL)
|      1 |  -- David (NOT NULL)
|      0 |  -- NULL  (เป็น NULL)
+--------+
4 rows in set (0.00 sec)

ข้อสังเกตสำคัญ: Empty String vs NULL

ค่าIS NULLIS NOT NULL= ''
NULLTrueFalseUnknown (ไม่ใช่ True/False)
'' (Empty)FalseTrueTrue
'text'FalseTrueFalse

กรณีต้องการ: NOT NULL และไม่ใช่ Empty String

SELECT IF(Name IS NOT NULL AND Name <> '', 1, 0) FROM DemoTable1915;

ผลลัพธ์: Chris=1, ''=0, David=1, NULL=0

ฟังก์ชันทางเลือก

-- IFNULL: คืนค่า 0 ถ้า NULL, 1 ถ้าไม่ NULL (แต่ Empty String = 1)
SELECT IFNULL(Name, 0) -- ไม่เหมาะ

-- COALESCE: เหมือน IFNULL
SELECT COALESCE(Name, 0)

-- 推薦: ใช้ IF() โดยตรงเหมือนตัวอย่าง

สรุป: ใช้ IF(column IS NOT NULL, 1, 0) ได้ค่า 1 สำหรับ NOT NULL (รวม Empty String) หากต้องการ exclude Empty String ให้เพิ่ม AND column <> ''