บทความนี้จะแสดงรายละเอียดเกี่ยวกับวิธีใช้ฟังก์ชันจัดการคำสั่ง CASE ใน SQL Server พร้อมไวยากรณ์และตัวอย่างเฉพาะเพื่อให้เห็นภาพและจับภาพฟังก์ชันได้ดียิ่งขึ้น
อธิบาย
คำสั่ง CASE ใช้เพื่อกำหนดเงื่อนไขสาขาใน SQL Server คล้ายกับฟังก์ชันของคำสั่ง IF-THEN-ELSE
CASE มี 2 รูปแบบ:
- ฟังก์ชัน Simple CASE หรือที่เรียกว่า Simple CASE
- ฟังก์ชันการค้นหา CASE เรียกอีกอย่างว่า Searched CASE
ภายใน:
- Simple CASE คือการเปรียบเทียบนิพจน์กับชุดของนิพจน์ทั่วไปเพื่อกำหนดผลลัพธ์
- กรณีที่ค้นหาคือการประเมินชุดของนิพจน์บูลีนเพื่อกำหนดผลลัพธ์
- ทั้งสองรูปแบบรองรับอาร์กิวเมนต์ ELSE (แต่ไม่จำเป็น)
ไวยากรณ์
ในการใช้คำสั่ง CASE ใน SQL Server เราใช้ไวยากรณ์ต่อไปนี้:
ตัวพิมพ์ธรรมดา
CASE bieuthuc_dauvao
WHEN bieuthuc_1 THEN ketqua_1
WHEN bieuthuc_2 THEN ketqua_2
.
WHEN bieuthuc_n THEN ketqua_n
ELSE ketqua_khac
END
หรือ ค้นหากรณี
CASE
WHEN dieukien_1 THEN ketqua_1
WHEN dieukien_2 THEN ketqua_2
.
WHEN dieukien_n THEN ketqua_n
ELSE ketqua_khac
END
พารามิเตอร์ :
- bieutuc_dauvao:The นิพจน์จะถูกเปรียบเทียบกับแต่ละค่าที่ให้ไว้
- bieuthuc_1, bieuthuc_2, bieuthuc_n: นิพจน์จะถูกใช้เพื่อเปรียบเทียบกับนิพจน์อินพุต เมื่อนิพจน์ตรงกับ bieuthu_dauvao CASE จะดำเนินการคำสั่งถัดไปและจะไม่มีการเปรียบเทียบเพิ่มเติม
- dieukien_1, dieukien_2, dieukien_n :ตรวจทานเงื่อนไขแล้ว อนุมัติในลำดับที่ระบุ เมื่อเงื่อนไขถูกกำหนดให้เป็นจริง CASE จะส่งกลับผลลัพธ์และไม่มีการประเมินเงื่อนไขเพิ่มเติม เงื่อนไขทั้งหมดต้องเป็นประเภทข้อมูลเดียวกัน
- ketqua_1, ketqua_2, ketqua_n :ผลลัพธ์ที่ได้หลังจากพิจารณาเงื่อนไขเป็นจริง ค่าทั้งหมดต้องเป็นประเภทข้อมูลเดียวกัน
หมายเหตุ :
- ถ้าไม่มี ตรงกัน พบสำหรับ TRUE คำสั่ง CASE จะส่งคืนผลลัพธ์ในส่วนคำสั่ง ELSE
- หากไม่มีส่วนคำสั่ง ELSE และไม่มีเงื่อนไข TRUE คำสั่ง CASE จะคืนค่า NULL
- มีการประเมินเงื่อนไขตามลำดับที่แสดง เมื่อเงื่อนไขถูกกำหนดให้เป็นจริง คำสั่ง CASE จะส่งกลับผลลัพธ์และไม่มีการประเมินเงื่อนไขเพิ่มเติม
- CASE สามารถใช้ได้ใน SQL Server รุ่นที่ใหม่กว่า:SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008 และ SQL Server 2005
ตัวอย่าง
ลองดูและสำรวจตัวอย่างบางส่วนของคำสั่ง CASE ใน SQL Server
ตัวอย่างที่ 1:กรณีธรรมดา
สมมติว่าคุณจำเป็นต้องตรวจสอบส่วนของเว็บไซต์ TipsMake.com ตามคอลัมน์โค้ดของตารางการแปลง:
- ถ้ารหัส ='01' คือ 'Laptrinh-TipsMake.com'
- ถ้ารหัส ='02' คือ 'Congnghe-TipsMake.com'
- ถ้ารหัส ='03' คือ 'Cuocsong-TipsMake.com'
- ตรงกันข้าม นั่นไม่ใช่ 1 ถึง 3 แล้วในหัวข้อ 'Khoahoc-TipsMake.com'
SELECT tenchuyenmuc, Code
(CASE code
WHEN 01 THEN 'Laptrinh-TipsMake.com'
WHEN 02 THEN 'Congnghe-TipsMake.com'
WHEN 03 THEN 'Cuocsong-TipsMake.com'
ELSE 'Khoahoc-TipsMake.com'
END) AS Chuyenmuc
FROM chuyenmuc
ORDER BY Code
ผลลัพธ์ที่ได้:
เทนจูเยนมูซ รหัส ชื่นฉ่ำ SQL Server 01 Laptrinh-TipsMake.com Linux 02 Congnghe-TipsMake.com Python 01 Laptrinh-TipsMake.com JavaScript 01 Laptrinh-TipsMake.com Android 02 Congnghe-TipsMake.com Giai tri 03 Cuocsong-TipsMake.com Cuocsong-TipsMake.com Science Curve 04 Khoahoc-TipsMake.com Kham pha Science 05 Khoahoc-TipsMake.comตัวอย่างที่ 2:กรณีค้นหา
SELECT tenchuyenmuc,
CASE
WHEN code = 01 THEN 'Laptrinh-TipsMake.com'
WHEN code = 02 THEN 'Congnghe-TipsMake.com'
WHEN code = 03 THEN 'Cuocsong-TipsMake.com'
ELSE 'Khoahoc-TipsMake.com'
END
FROM chuyenmuc;
คุณยังใช้เงื่อนไข ELSE แบบนี้ไม่ได้:
SELECT tenchuyenmuc, Code
(CASE code
WHEN 01 THEN 'Laptrinh-TipsMake.com'
WHEN 02 THEN 'Congnghe-TipsMake.com'
WHEN 03 THEN 'Cuocsong-TipsMake.com'
END) AS Chuyenmuc
FROM chuyenmuc
ORDER BY Code
หรือ:
SELECT tenchuyenmuc,
CASE
WHEN code = 01 THEN 'Laptrinh-TipsMake.com'
WHEN code = 02 THEN 'Congnghe-TipsMake.com'
WHEN code = 03 THEN 'Cuocsong-TipsMake.com'
END
FROM chuyenmuc;
เมื่อละเว้นส่วนคำสั่ง ELSE หากไม่มีเงื่อนไขใดเป็นจริง คำสั่ง CASE จะส่งกลับค่า NULL
ตัวอย่างที่ 3:การเปรียบเทียบสองเงื่อนไข
นี่คือตัวอย่างที่แสดงวิธีการใช้คำสั่ง CASE เพื่อเปรียบเทียบเงื่อนไขต่างๆ:
SELECT
CASE
WHEN code < 2 THEN 'Laptrinh-TipsMake.com'
WHEN code = 2 THEN 'Congnghe-TipsMake.com'
END
FROM chuyenmuc;
อย่าลืมว่าเงื่อนไขจะถูกเปรียบเทียบตามลำดับที่แสดง เมื่อเงื่อนไขถูกกำหนดให้เป็นจริง คำสั่ง CASE จะส่งกลับผลลัพธ์ทันทีและจะไม่มีการประเมินเงื่อนไขอื่นใด ดังนั้นคุณจึงต้องระมัดระวังในการเลือกคำสั่งซื้อที่แสดงรายการเงื่อนไขของคุณ
ดูตัวอย่างเพิ่มเติมของฟังก์ชัน CASE ใน SQL Server