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

Cách chuyển đổi BOOL sang INT trong MySQL

Trong MySQL, BOOL và BOOLEAN là alias của TINYINT(1). Giá trị TRUE = 1, FALSE = 0. Để ép kiểu rõ ràng, dùng CAST().

Ví dụ minh họa

Tạo bảng cột BOOL:

CREATE TABLE convertBoolToIntDemo (
    isYoung BOOL
);

Kiểm tra kiểu thực tế (DESC):

+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| isYoung | tinyint(1)  | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+

→ MySQL nội bộ lưu BOOL là TINYINT(1).

Chèn dữ liệu:

INSERT INTO convertBoolToIntDemo VALUES (TRUE), (FALSE), (TRUE), (FALSE);

SELECT trực tiếp (hiển thị 1/0):

+---------+
| isYoung |
+---------+
| 1       |
| 0       |
| 1       |
| 0       |
+---------+

Ép kiểu rõ ràng sang SIGNED INTEGER:

SELECT CAST(isYoung = 1 AS SIGNED INTEGER) FROM convertBoolToIntDemo;

Kết quả (1/0):

+-----------------------------------+
| CAST(isYoung=1 AS SIGNED INTEGER) |
+-----------------------------------+
| 1                                 |
| 0                                 |
| 1                                 |
| 0                                 |
+-----------------------------------+

Giải thích:

  • isYoung = 1 trả về boolean (1/0).
  • CAST(... AS SIGNED INTEGER) đảm bảo kiểu trả về là INT có dấu.
  • Thực tế chỉ cần SELECT isYoung + 0 hoặc CAST(isYoung AS UNSIGNED) cũng cho 1/0.