Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ดึงคอลัมน์เดียวตามเงื่อนไข Boolean Field ใน MySQL

ภาพรวม

ใน 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 / true11
FALSE / false00
NULLNULLNULL

การใช้งานเพิ่มเติม

ใน 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 และเลือกคอลัมน์ที่ต้องการ