SQL Server IIF เทียบกับ CASE


87

ฉันเพิ่งทราบเกี่ยวกับความพร้อมใช้งานของIIFฟังก์ชันใน SQL Server 2012 ฉันมักจะใช้แบบซ้อนCASEในแบบสอบถามของฉัน ฉันต้องการทราบจุดประสงค์ที่แน่นอนของIIFคำสั่งและเมื่อใดที่เราควรใช้IIFมากกว่าCASEคำสั่งในแบบสอบถาม ส่วนใหญ่ฉันใช้แบบซ้อนCASEในแบบสอบถามของฉัน

ขอบคุณสำหรับข้อมูลทั้งหมด


9
IIF เป็นเพียงชวเลขสำหรับคำสั่ง CASE ง่ายๆ มันยังถูกแปลเป็นคำสั่งกรณีสำหรับการเพิ่มประสิทธิภาพและการดำเนินการสืบค้น: technet.microsoft.com/en-us/library/hh213574.aspx
Sam DeHaan

1
เป็นเรื่องน่าเสียดายที่การจดชวเลขไม่ได้เป็นส่วนหนึ่งของมาตรฐาน (ทุกวันนี้มันคืออะไร ANSISQL?) เพราะอ่านง่ายกว่ามาก แต่ T-SQL มักจะเป็น ... "wordy"
Neil Barnwell

คำตอบ:


144

IIF เหมือนกับ CASE WHEN <Condition> THEN <true part> ELSE <false part> END . แผนแบบสอบถามจะเหมือนกัน บางทีอาจเป็น "น้ำตาลสังเคราะห์" ตามที่นำมาใช้ในตอนแรก

CASE เป็นแบบพกพาบนแพลตฟอร์ม SQL ทั้งหมดในขณะที่ IIF เป็น SQL SERVER 2012+ เฉพาะ


6
อาจจะทำให้นักพัฒนา Access / VB จดจำไวยากรณ์ได้ง่ายขึ้น
ชื่อที่น่าสนใจ - ที่นี่

20

IIF เป็นฟังก์ชัน T-SQL ที่ไม่ได้มาตรฐาน มันถูกเพิ่มลงใน SQL SERVER 2012 เพื่อให้ Access สามารถโยกย้ายไปยัง SQL Server ได้โดยไม่ต้องปรับโครงสร้างของ IIF ไปยัง CASE ก่อนส่ง เมื่อฐานข้อมูล Access ถูกโยกย้ายไปยัง SQL Server อย่างสมบูรณ์คุณสามารถ refactor


13
ฉันชอบเหตุผลของคุณ คุณสามารถสนับสนุนโดยอ้างเอกสารประกอบได้หรือไม่?
Peter Ivan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.