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

เปลี่ยนค่า 1 เป็น Y ใน MySQL SELECT ด้วย IF()

การแปลงค่า Boolean-like (1/0) เป็น Y/N ด้วย IF()

ฟังก์ชัน IF(condition, true_value, false_value) ใน MySQL ใช้สำหรับเงื่อนไขแบบ binary (2 ทางเลือก) สั้นกว่า CASE

ไวยากรณ์

SELECT IF(yourColumn = 1, 'Y', 'N') AS flag FROM yourTable;

หรือใช้ความจริงของตัวเลขโดยตรง (0 = FALSE, non-zero = TRUE):

SELECT IF(yourColumn, 'Y', yourColumn) AS flag FROM yourTable;

ตัวอย่างการใช้งาน

สร้างตาราง (เหมือนบทความก่อนหน้า):

CREATE TABLE changeValuefrom1toY (
    Id INT NOT NULL AUTO_INCREMENT,
    isValidAddress TINYINT(1),
    PRIMARY KEY(Id)
);

INSERT INTO changeValuefrom1toY(isValidAddress) VALUES(1), (0), (1), (1), (1), (0), (1);

ใช้ IF():

SELECT IF(isValidAddress, 'Y', isValidAddress) AS Answer FROM changeValuefrom1toY;

ผลลัพธ์:

+--------+
| Answer |
+--------+
| Y      |
| 0      |
| Y      |
| Y      |
| Y      |
| 0      |
| Y      |
+--------+

การจัดการ NULL

หากคอลัมน์มี NULL:

-- NULL ถือเป็น FALSE ใน IF()
SELECT IF(isValidAddress, 'Y', 'N') FROM table;  -- NULL -> 'N'

-- แยก NULL ออกมา
SELECT CASE 
           WHEN isValidAddress = 1 THEN 'Y'
           WHEN isValidAddress = 0 THEN 'N'
           ELSE 'Unknown'
       END FROM table;

เปรียบเทียบ IF() vs CASE

คุณสมบัติIF(cond, true, false)CASE WHEN ... END
มาตรฐาน SQLไม่ใช่ (MySQL only)ใช่ (ANSI)
จำนวนเงื่อนไข2 ทางเลือก (true/false)ไม่จำกัด
NULL handlingNULL = FALSEควบคุมได้ชัดเจน
ความยาวโค้ดสั้นยาวกว่า
Nestedได้แต่อ่านยากอ่านง่ายกว่า

คำแนะนำ

  • ใช้ IF() สำหรับ logic แบบ binary เรียบง่าย (1/0, true/false, yes/no)
  • ใช้ CASE สำหรับ logic ซับซ้อน, หลายเงื่อนไข, หรือต้องจัดการ NULL แยกต่างหาก
  • ใน Application code แนะนำทำการ mapping ที่ Application layer แทน (แยก concerns)