<=> คือ Null-Safe Equal Operator เปรียบเทียบค่า 2 ค่า คืน 1 (True) หรือ 0 (False) ไม่คืน NULL แม้ Input เป็น NULL
ความแตกต่างกับ = (Regular Equal)
| Expression | = | <=> |
|---|---|---|
10 = 10 | 1 (True) | 1 (True) |
10 = 5 | 0 (False) | 0 (False) |
NULL = NULL | NULL (Unknown) | 1 (True) ← Key Difference |
10 = NULL | NULL (Unknown) | 0 (False) |
NULL = 10 | NULL (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