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

Chuyển đổi giá trị Boolean (0/1) thành chuỗi 'MALE'/'FEMALE' trong MySQL

Giới thiệu

MySQL lưu BOOLEAN thực chất là TINYINT(1): TRUE = 1, FALSE = 0. Để hiển thị dễ hiểu, dùng hàm IF() hoặc CASE để ánh xạ sang nhãn văn bản.

Ví dụ thực hành

1. Tạo bảng DemoTable815

mysql> CREATE TABLE DemoTable815 (Gender BOOLEAN);

2. Chèn dữ liệu

mysql> INSERT INTO DemoTable815 VALUES (TRUE), (FALSE), (FALSE), (TRUE);

3. Hiển thị dạng số (0/1)

mysql> SELECT * FROM DemoTable815;
+--------+
| Gender |
+--------+
|      1 |
|      0 |
|      0 |
|      1 |
+--------+

4. Chuyển đổi sang chuỗi với IF()

mysql> SELECT IF(Gender = TRUE, 'MALE', 'FEMALE') AS `String` FROM DemoTable815;

5. Kết quả

+--------+
| String |
+--------+
| MALE   |
| FEMALE |
| FEMALE |
| MALE   |
+--------+

Cách thay thế: CASE WHEN (chuẩn SQL, linh hoạt hơn)

SELECT CASE Gender WHEN TRUE THEN 'MALE' ELSE 'FEMALE' END AS `String` FROM DemoTable815;

-- Hoặc xử lý NULL an toàn
SELECT CASE WHEN Gender IS NULL THEN 'UNKNOWN' WHEN Gender THEN 'MALE' ELSE 'FEMALE' END AS `String` 
FROM DemoTable815;

Thiết kế bảng tốt hơn

  • Dùng ENUM('MALE','FEMALE','OTHER') thay vì BOOLEAN → lưu trực tiếp nhãn, dễ đọc, ràng buộc giá trị.
  • Hoặc TINYINT UNSIGNED + CHECK (Gender IN (0,1,2)) (MySQL 8.0.16+ enforce CHECK).
  • Tránh lưu 'Male'/'Female' dạng VARCHAR (tốn dung lượng, dễ sai chính tả).

Lưu ý

  • IF() là hàm MySQL-specific. CASE chuẩn SQL, nên dùng cho code di động.
  • Gender = TRUE tương đương Gender = 1 hoặc chỉ Gender (vì TRUE=1).