การใช้คอลัมน์ 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