Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL Server

คำสั่ง CASE ใน SQL Server

บทความนี้จะแสดงรายละเอียดเกี่ยวกับวิธีใช้ฟังก์ชันจัดการคำสั่ง CASE ใน SQL Server พร้อมไวยากรณ์และตัวอย่างเฉพาะเพื่อให้เห็นภาพและจับภาพฟังก์ชันได้ดียิ่งขึ้น

อธิบาย

คำสั่ง CASE ใช้เพื่อกำหนดเงื่อนไขสาขาใน SQL Server คล้ายกับฟังก์ชันของคำสั่ง IF-THEN-ELSE

CASE มี 2 รูปแบบ:

  1. ฟังก์ชัน Simple CASE หรือที่เรียกว่า Simple CASE
  2. ฟังก์ชันการค้นหา CASE เรียกอีกอย่างว่า Searched CASE

ภายใน:

  1. Simple CASE คือการเปรียบเทียบนิพจน์กับชุดของนิพจน์ทั่วไปเพื่อกำหนดผลลัพธ์
  2. กรณีที่ค้นหาคือการประเมินชุดของนิพจน์บูลีนเพื่อกำหนดผลลัพธ์
  3. ทั้งสองรูปแบบรองรับอาร์กิวเมนต์ 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

พารามิเตอร์ :

  1. bieutuc_dauvao:The นิพจน์จะถูกเปรียบเทียบกับแต่ละค่าที่ให้ไว้
  2. bieuthuc_1, bieuthuc_2, bieuthuc_n: นิพจน์จะถูกใช้เพื่อเปรียบเทียบกับนิพจน์อินพุต เมื่อนิพจน์ตรงกับ bieuthu_dauvao CASE จะดำเนินการคำสั่งถัดไปและจะไม่มีการเปรียบเทียบเพิ่มเติม
  3. dieukien_1, dieukien_2, dieukien_n :ตรวจทานเงื่อนไขแล้ว อนุมัติในลำดับที่ระบุ เมื่อเงื่อนไขถูกกำหนดให้เป็นจริง CASE จะส่งกลับผลลัพธ์และไม่มีการประเมินเงื่อนไขเพิ่มเติม เงื่อนไขทั้งหมดต้องเป็นประเภทข้อมูลเดียวกัน
  4. ketqua_1, ketqua_2, ketqua_n :ผลลัพธ์ที่ได้หลังจากพิจารณาเงื่อนไขเป็นจริง ค่าทั้งหมดต้องเป็นประเภทข้อมูลเดียวกัน

หมายเหตุ :

  1. ถ้าไม่มี ตรงกัน พบสำหรับ TRUE คำสั่ง CASE จะส่งคืนผลลัพธ์ในส่วนคำสั่ง ELSE
  2. หากไม่มีส่วนคำสั่ง ELSE และไม่มีเงื่อนไข TRUE คำสั่ง CASE จะคืนค่า NULL
  3. มีการประเมินเงื่อนไขตามลำดับที่แสดง เมื่อเงื่อนไขถูกกำหนดให้เป็นจริง คำสั่ง CASE จะส่งกลับผลลัพธ์และไม่มีการประเมินเงื่อนไขเพิ่มเติม
  4. 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 ตามคอลัมน์โค้ดของตารางการแปลง:

  1. ถ้ารหัส ='01' คือ 'Laptrinh-TipsMake.com'
  2. ถ้ารหัส ='02' คือ 'Congnghe-TipsMake.com'
  3. ถ้ารหัส ='03' คือ 'Cuocsong-TipsMake.com'
  4. ตรงกันข้าม นั่นไม่ใช่ 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