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

ออปเปอเรเตอร์ <=> (Null-Safe Equal) ใน MySQL

<=> คือ Null-Safe Equal Operator เปรียบเทียบค่า 2 ค่า คืน 1 (True) หรือ 0 (False) ไม่คืน NULL แม้ Input เป็น NULL

ความแตกต่างกับ = (Regular Equal)

Expression=<=>
10 = 101 (True)1 (True)
10 = 50 (False)0 (False)
NULL = NULLNULL (Unknown)1 (True) ← Key Difference
10 = NULLNULL (Unknown)0 (False)
NULL = 10NULL (Unknown)0 (False)

ตัวอย่าง Query

mysql> SELECT 10 <=> 10, NULL <=> NULL, 10 <=> NULL;
+-----------+---------------+-------------+
| 10 <=> 10 | NULL <=> NULL | 10 <=> NULL |
+-----------+---------------+-------------+
| 1         | 1             | 0           |
+-----------+-------------+-------------+
mysql> SELECT 10 = 10, NULL = NULL, 10 = NULL;
+---------+-------------+-----------+
| 10 = 10 | NULL = NULL | 10 = NULL |
+---------+-------------+-----------+
| 1       | NULL        | NULL      |
+---------+-------------+-----------+

Use Case: JOIN / WHERE กับ NULL

-- หาแถวที่ col1 = col2 (รวม NULL = NULL)
SELECT * FROM t1 JOIN t2 ON t1.col1 <=> t2.col2;

-- WHERE col = value (ปลอดภัยกับ NULL)
SELECT * FROM t WHERE col <=> 'some_value';
สรุป: <=> ใช้เมื่อต้องการเปรียบเทียบ NULL ได้ (NULL = NULL → True) เหมาะกับ JOIN Key ที่อาจเป็น NULL และ WHERE Clause ที่ไม่ต้องการ Three-Valued Logic