MySQL เก็บค่า ENUM ภายในเป็นคีย์จำนวนเต็ม (หมายเลขดัชนี) เพื่ออ้างอิงสมาชิก ENUM สาเหตุหลักที่ไม่เก็บค่าจำนวนเต็มในคอลัมน์ ENUM ก็คือมันชัดเจนมากว่า MySQL ลงเอยด้วยการอ้างอิงดัชนีแทนค่าและในทางกลับกัน
ตัวอย่าง
ตัวอย่างต่อไปนี้สามารถอธิบายได้ -
mysql> Create table enmtest(Val ENUM('0','1','2')); Query OK, 0 rows affected (0.18 sec) mysql> Insert into enmtest values('1'),(1); Query OK, 2 rows affected (0.19 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> Select * from enmtest; +-----+ | Val | +-----+ | 1 | | 0 | +-----+ 2 rows in set (0.00 sec)
ที่นี่ เราแทรก '1' เป็นสตริงและแทรก 1 เป็นตัวเลขโดยไม่ได้ตั้งใจ (โดยไม่ใส่เครื่องหมายอัญประกาศ) MySQL ใช้อินพุตตัวเลขของเราเป็นค่าดัชนีอย่างสับสน เช่น การอ้างอิงภายในไปยังรายการแรกในรายชื่อสมาชิก (เช่น 0)