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

การจับคู่ค่าในคอลัมน์ ENUM ที่มีเครื่องหมายออโต้ (Quoted Values) ใน MySQL

การใช้คอลัมน์ ENUM และการค้นหาด้วยค่าที่มีเครื่องหมายออโต้

คอลัมน์ ENUM ใน MySQL เก็บค่าจากชุดที่กำหนดไว้ล่วงหน้า เมื่อค้นหาหรือกรองข้อมูล ต้องใช้ค่าที่ตรงกับที่กำหนดใน ENUM รวมถึงเครื่องหมายออโต้

สร้างตารางพร้อมคอลัมน์ ENUM

mysql> CREATE TABLE DemoTable (isMarried ENUM('1','0'));
Query OK, 0 rows affected (0.46 sec)

เพิ่มข้อมูล

mysql> INSERT INTO DemoTable VALUES('0');
mysql> INSERT INTO DemoTable VALUES('1');
mysql> INSERT INTO DemoTable VALUES('1');
mysql> INSERT INTO DemoTable VALUES('0');
mysql> INSERT INTO DemoTable VALUES('0');
mysql> INSERT INTO DemoTable VALUES('1');
mysql> INSERT INTO DemoTable VALUES('0');

แสดงข้อมูลทั้งหมด

mysql> SELECT * FROM DemoTable;

ผลลัพธ์:

+-----------+
| isMarried |
+-----------+
| 0         |
| 1         |
| 1         |
| 0         |
| 0         |
| 1         |
| 0         |
+-----------+
7 rows in set (0.00 sec)

คำสั่งนับจำนวนที่มีค่า '0'

mysql> SELECT COUNT(*) FROM DemoTable WHERE isMarried = '0';

ผลลัพธ์:

+----------+
| count(*) |
+----------+
| 4        |
+----------+
1 row in set (0.06 sec)

คำอธิบาย

  • ค่าใน ENUM ต้องระบุในเครื่องหมายออโต้ (single quotes) เช่น '0', '1'
  • แม้ ENUM จะเก็บเป็นตัวเลขภายใน แต่การเปรียบเทียบต้องใช้ค่าสตริงที่ตรงกับที่ประกาศ
  • หากใช้ WHERE isMarried = 0 (ไม่มีเครื่องหมายออโต้) อาจทำงานได้แต่ไม่แนะนำ เพราะอาจสับสนกับ index position