ตัวดำเนินการ NOT EQUAL ใน MySQL
มีครับ MySQL รองรับตัวดำเนินการ NOT EQUAL สองรูปแบบ:
<>- มาตรฐาน SQL (ANSI SQL)!=- รูปแบบที่ใช้กันทั่วไป (non-standard แต่รองรับใน MySQL)
ไวยากรณ์
SELECT * FROM yourTableName WHERE yourColumnName <> yourValue;
-- หรือ
SELECT * FROM yourTableName WHERE yourColumnName != yourValue;
ตัวอย่างการใช้งาน
สร้างตารางทดสอบ:
CREATE TABLE DoesNotEqualDemo (
Id INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(20),
PRIMARY KEY(Id)
);
เพิ่มข้อมูลทดสอบ (รวม NULL และ empty string):
INSERT INTO DoesNotEqualDemo(Name) VALUES(NULL);
INSERT INTO DoesNotEqualDemo(Name) VALUES('John');
INSERT INTO DoesNotEqualDemo(Name) VALUES('Carol');
INSERT INTO DoesNotEqualDemo(Name) VALUES('Bob');
INSERT INTO DoesNotEqualDemo(Name) VALUES('');
INSERT INTO DoesNotEqualDemo(Name) VALUES('Larry');
INSERT INTO DoesNotEqualDemo(Name) VALUES(NULL);
ค้นหาข้อมูลที่ไม่ใช่ NULL และไม่ใช่ empty string:
SELECT * FROM DoesNotEqualDemo WHERE Name <> 'NULL' AND Name <> '';
ผลลัพธ์:
+----+-------+
| Id | Name |
+----+-------+
| 2 | John |
| 3 | Carol |
| 4 | Bob |
| 6 | Larry |
+----+-------+
ข้อควรระวังเรื่อง NULL
ใน SQL การเปรียบเทียบกับ NULL ด้วย <> หรือ = จะคืนค่า UNKNOWN (ไม่ใช่ TRUE/FALSE) เสมอ:
-- ผลลัพธ์จะไม่รวมแถวที่ Name IS NULL
SELECT * FROM DoesNotEqualDemo WHERE Name <> 'John'; -- ไม่รวม NULL
-- ต้องใช้ IS NULL / IS NOT NULL แทน
SELECT * FROM DoesNotEqualDemo WHERE Name <> 'John' OR Name IS NULL;
สรุป
- ใช้
<>สำหรับความเข้ากันได้กับฐานข้อมูลอื่น - ใช้
!=สำหรับความสะดวก (เหมือนภาษาโปรแกรมส่วนใหญ่) - จำไว้: NULL ต้องตรวจสอบด้วย
IS NULL/IS NOT NULLเท่านั้น