Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Khớp cột ENUM MySQL với giá trị có dấu nháy đơn

Khi làm việc với cột ENUM trong MySQL, các giá trị được so khớp dưới dạng chuỗi (string) nên cần dùng dấu nháy đơn trong điều kiện WHERE.

Ví dụ minh họa

Tạo bảng với cột ENUM('1','0'):

mysql> create table DemoTable( 
    isMarried ENUM('1','0') 
);

Chèn dữ liệu (lưu ý: giá trị ENUM phải nhập dưới dạng chuỗi '1' hoặc '0'):

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');

Hiển thị dữ liệu:

mysql> select * from DemoTable;

Kết quả:

+-----------+
| isMarried |
+-----------+
| 0         |
| 1         |
| 1         |
| 0         |
| 0         |
| 1         |
| 0         |
+-----------+

Truy vấn đếm số bản ghi có giá trị '0'

mysql> select count(*) from DemoTable where isMarried='0';

Kết quả:

+----------+
| count(*) |
+----------+
| 4        |
+----------+

Giải thích:

  • Cột ENUM lưu trữ nội bộ dưới dạng số nguyên (index bắt đầu từ 1), nhưng so sánh trong WHERE phải dùng giá trị chuỗi gốc ('1', '0')
  • Nếu dùng WHERE isMarried = 0 (số) → MySQL hiểu là index 0 (giá trị rỗng/NULL) → sai kết quả
  • Luôn dùng dấu nháy đơn: WHERE isMarried = '0' hoặc WHERE isMarried = '1'

Lưu ý: ENUM('1','0') có index: '1'=1, '0'=2. Không nhầm lẫn giữa giá trị hiển thị và index lưu trữ.