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

Đánh giá biểu thức BOOLEAN đơn giản với CASE WHEN trong MySQL

MySQL không có kiểu dữ liệu BOOLEAN thực sự (BOOLEAN là alias của TINYINT(1)). Để đánh giá logic và trả về chuỗi 'true'/'false', sử dụng CASE WHEN.

Cú pháp

CASE WHEN điều_kiện THEN 'true' ELSE 'false' END AS tên_alias

Ví dụ minh họa

Tạo bảng demo:

mysql> CREATE TABLE BooleanEvaluationDemo (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> FirstValue INT,
    -> SecondValue INT
    -> );
Query OK, 0 rows affected (0.71 sec)

Chèn dữ liệu:

mysql> INSERT INTO BooleanEvaluationDemo(FirstValue, SecondValue) VALUES
    -> (10, 5), (15, 20), (50, 40), (500, 1000);

Xem dữ liệu:

mysql> SELECT * FROM BooleanEvaluationDemo;
+----+------------+-------------+
| Id | FirstValue | SecondValue |
+----+------------+-------------+
| 1  | 10         | 5           |
| 2  | 15         | 20          |
| 3  | 50         | 40          |
| 4  | 500        | 1000        |
+----+------------+-------------+

Đánh giá FirstValue > SecondValue:

mysql> SELECT FirstValue, SecondValue,
    -> CASE WHEN FirstValue > SecondValue THEN 'true' ELSE 'false' END 
    -> AS FirstValuesGreaterThanSecond
    -> FROM BooleanEvaluationDemo;
+------------+-------------+-------------------------------+
| FirstValue | SecondValue | FirstValuesGreaterThanSecond  |
+------------+-------------+-------------------------------+
| 10         | 5           | true                          |
| 15         | 20          | false                         |
| 50         | 40          | true                          |
| 500        | 1000        | false                         |
+------------+-------------+-------------------------------+

Mở rộng: Trả về 1/0 thay vì chuỗi

SELECT FirstValue, SecondValue,
       (FirstValue > SecondValue) AS IsGreater
FROM BooleanEvaluationDemo;

Kết quả cột IsGreater sẽ là 1 (true) hoặc 0 (false) - đây là cách MySQL gốc xử lý boolean.