MySQL thực sự đang đánh lừa bạn. Nó hoàn toàn không có loại cột boolean :
Ngoài ra, các ký tự boolean không như vậy :
Xét rằng:
- Nhiều hệ thống cơ sở dữ liệu cũng không có boolean (ít nhất là trong các kiểu cột và SQL tiêu chuẩn)
- MySQL không có cách dễ dàng để thực thi
0
hoặc1
trongBOOLEAN
Kết luận của tôi sẽ là:
- Bạn sẽ phải sử dụng cờ
WHERE IS flag
hoặc chỉ cờWHERE flag
bởi vì=
chỉ đơn giản là không hoạt động chính xác. Cái nào, có thể là một vấn đề của sở thích. - Dù bạn chọn gì, sẽ không có tùy chọn nào độc lập với nhà cung cấp. Ví dụ, Oracle thậm chí sẽ không chạy một trong hai.
Chỉnh sửa: nếu đa nền tảng là bắt buộc, tôi sẽ làm điều này:
WHERE flag=0
WHERE flag<>0
Tôi chắc rằng tất cả chúng ta đều đã làm điều đó rất nhiều lần.