ภาพรวม
ใน MySQL BOOLEAN เป็น Alias ของ TINYINT(1) ค่า TRUE = 1, FALSE = 0 สามารถใช้ใน WHERE ได้โดยตรง
ตัวอย่างสมบูรณ์
1. สร้างตารางและข้อมูล
CREATE TABLE DemoTable (
EmployeeId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
EmployeeName VARCHAR(40),
IsMarried BOOLEAN
);
INSERT INTO DemoTable (EmployeeName, IsMarried) VALUES ('Chris', TRUE);
INSERT INTO DemoTable (EmployeeName, IsMarried) VALUES ('Robert', FALSE);
INSERT INTO DemoTable (EmployeeName, IsMarried) VALUES ('Mike', FALSE);
INSERT INTO DemoTable (EmployeeName, IsMarried) VALUES ('Bob', TRUE);
INSERT INTO DemoTable (EmployeeName, IsMarried) VALUES ('Tom', TRUE);
2. ข้อมูลทั้งหมด (แสดงเป็น 1/0)
SELECT * FROM DemoTable;
+------------+--------------+-----------+
| EmployeeId | EmployeeName | IsMarried |
+------------+--------------+-----------+
| 1 | Chris | 1 |
| 2 | Robert | 0 |
| 3 | Mike | 0 |
| 4 | Bob | 1 |
| 5 | Tom | 1 |
+------------+--------------+-----------+
3. ดึงเฉพาะชื่อพนักงานที่แต่งงานแล้ว (IsMarried = TRUE)
SELECT EmployeeName FROM DemoTable WHERE IsMarried = TRUE;
-- หรือ
SELECT EmployeeName FROM DemoTable WHERE IsMarried = 1;
-- หรือ
SELECT EmployeeName FROM DemoTable WHERE IsMarried;
4. ผลลัพธ์
+--------------+
| EmployeeName |
+--------------+
| Chris |
| Bob |
| Tom |
+--------------+
Boolean ใน MySQL: รายละเอียด
| Literal | ค่าจริง | แสดงเป็น |
|---|---|---|
| TRUE / true | 1 | 1 |
| FALSE / false | 0 | 0 |
| NULL | NULL | NULL |
การใช้งานเพิ่มเติม
ใน SELECT (แสดงข้อความแทน 1/0)
SELECT
EmployeeName,
CASE IsMarried WHEN 1 THEN 'Married' ELSE 'Single' END AS MaritalStatus
FROM DemoTable;
นับจำนวน True/False
SELECT
SUM(IsMarried) AS MarriedCount,
COUNT(*) - SUM(IsMarried) AS SingleCount
FROM DemoTable;
Toggle ค่า Boolean
UPDATE DemoTable SET IsMarried = NOT IsMarried WHERE EmployeeId = 1;
ข้อควรระวัง
BOOLEAN=TINYINT(1)จัดเก็บเป็นตัวเลขWHERE bool_colเทียบเท่ากับWHERE bool_col = 1(TRUE)WHERE NOT bool_colเทียบเท่ากับWHERE bool_col = 0(FALSE)- ค่า NULL:
WHERE bool_colจะไม่จับ NULL (NULL ไม่ใช่ TRUE ไม่ใช่ FALSE)
สรุป
ใช้ WHERE boolean_column = TRUE หรือ WHERE boolean_column โดยตรง เพื่อกรองแถวที่เป็น TRUE และเลือกคอลัมน์ที่ต้องการ