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

MySQL มีตัวดำเนินการ NOT EQUAL หรือไม่?

ตัวดำเนินการ 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 เท่านั้น