SQL Server IF...ELSE คำสั่งเงื่อนไข: T-SQL เลือกตัวอย่างแบบสอบถาม
เหตุใดคุณจึงต้องมี Conditional Statements?
คำสั่งแบบมีเงื่อนไขในเซิร์ฟเวอร์ SQL ช่วยให้คุณกำหนดตรรกะและการดำเนินการที่แตกต่างกันสำหรับเงื่อนไขที่แตกต่างกัน ช่วยให้คุณสามารถดำเนินการต่างๆ ตามเงื่อนไขที่กำหนดไว้ภายในคำสั่งได้ ในชีวิตจริง คุณกระทำหลายอย่างโดยขึ้นอยู่กับผลลัพธ์ของกิจกรรมหรือสถานการณ์อื่นๆ
ตัวอย่างคำสั่งกรณี SQL แบบเรียลไทม์ได้แก่:
- พรุ่งนี้ถ้าฝนตก ฉันจะวางแผนการเดินทาง
- หากตั๋วเครื่องบินจากเมืองของฉันมีราคาไม่ถึง 400 ดอลลาร์ ฉันจะไปเที่ยวพักผ่อนในยุโรป ไม่อย่างนั้นฉันจะเลือกสถานที่ท่องเที่ยวใกล้เคียงมากกว่า
ที่นี่ คุณจะเห็นว่าการกระทำอย่างหนึ่ง เช่น การเดินทางบนถนนด้านบนคือ ขึ้นอยู่กับเงื่อนไข กับผลอีกกิจกรรมหนึ่งคือ “พรุ่งนี้ฝนจะตก!”
ในทำนองเดียวกัน MS SQL ยังจัดเตรียมความสามารถในการรันคำสั่ง T-SQL แบบมีเงื่อนไข
ถ้า... คำสั่งอื่นใน SQL Server
In MSSQL, ถ้า…อย่างอื่น เป็นประเภทของ คำสั่งแบบมีเงื่อนไข.
คำสั่ง T-SQL ใด ๆ สามารถดำเนินการได้ตามเงื่อนไขโดยใช้ ถ้า... อย่างอื่น.
รูปด้านล่างอธิบาย IF ELSE ในเซิร์ฟเวอร์ SQL:
- หากประเมินสภาพได้ ทรูมันนี่ จากนั้นคำสั่ง T-SQL ตามด้วย IF เงื่อนไขในเซิร์ฟเวอร์ SQL จะถูกดำเนินการ
- หากประเมินสภาพได้ เท็จ จากนั้นคำสั่ง T-SQL ตามด้วย ELSE คำหลักจะถูกดำเนินการ
- ครั้งหนึ่ง คำสั่ง IF T-SQL หรือคำสั่ง ELSE T-SQL ถูกดำเนินการ ดังนั้นคำสั่ง T-SQL ที่ไม่มีเงื่อนไขอื่นๆ จะดำเนินการต่อไป
ถ้า… ไวยากรณ์และกฎอื่นใน SQL
ไวยากรณ์:
IF <Condition> {Statement | Block_of_statement} [ ELSE {Statement | Block_of_statement}]
กฎ:
- สภาพที่ควรจะเป็น นิพจน์บูลีนคือ เงื่อนไขจะให้ผลลัพธ์เป็นค่าบูลีนเมื่อประเมิน
- คำสั่ง IF ELSE ใน SQL สามารถจัดการคำสั่ง T-SQL เดียวหรือบล็อกของคำสั่ง T-SQL ได้ตามเงื่อนไข
- กลุ่มคำสั่งควรเริ่มต้นด้วยคำหลัก BEGIN และปิดด้วยคำหลัก END
- การใช้ BEGIN และ END ช่วยให้เซิร์ฟเวอร์ SQL สามารถระบุบล็อกคำสั่งที่จำเป็นต้องดำเนินการ และแยกบล็อกดังกล่าวออกจากคำสั่ง T-SQL ที่เหลือซึ่งไม่ได้เป็นส่วนหนึ่งของบล็อก IF...ELSE T-SQL
- ELSE เป็นทางเลือก
IF...ELSE ที่มีค่าตัวเลขเพียงค่าเดียวในนิพจน์บูลีน
เงื่อนไข: จริง
IF (1=1) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
เงื่อนไข: FALSE
IF (1=2) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
อัสสัมชั: สมมติว่าคุณมีตารางเป็น 'กูรู99' โดยแบ่งเป็น 2 คอลัมน์ 4 แถว ดังแสดงด้านล่างนี้:
เราจะใช้ 'กูรู99' ตารางในตัวอย่างเพิ่มเติม
IF...ELSE พร้อมตัวแปรใน Boolean Expression
เงื่อนไข: จริง
DECLARE @Course_ID INT = 4 IF (@Course_ID = 4) Select * from Guru99 where Tutorial_ID = 4 ELSE Select * from Guru99 where Tutorial_ID != 4
เงื่อนไข: FALSE
DECLARE @Course_ID INT = 4 IF (@Course_ID != 4) Select * from Guru99 where Tutorial_ID = 4 ELSE Select * from Guru99 where Tutorial_ID != 4
IF...ELSE พร้อม Begin End
เงื่อนไข: จริง
DECLARE @Course_ID INT = 2 IF (@Course_ID <=2) BEGIN Select * from Guru99 where Tutorial_ID = 1 Select * from Guru99 where Tutorial_ID = 2 END ELSE BEGIN Select * from Guru99 where Tutorial_ID = 3 Select * from Guru99 where Tutorial_ID = 4 END
เงื่อนไข: FALSE
DECLARE @Course_ID INT = 2 IF (@Course_ID >=3) BEGIN Select * from Guru99 where Tutorial_ID = 1 Select * from Guru99 where Tutorial_ID = 2 END ELSE BEGIN Select * from Guru99 where Tutorial_ID = 3 Select * from Guru99 where Tutorial_ID = 4 END
คำสั่ง IF ที่ไม่มีอย่างอื่น
คุณสามารถใช้คำสั่ง IF ใน SQL ได้โดยไม่ต้องมีส่วน ELSE โปรดจำไว้ว่าเราระบุไว้ว่าส่วน ELSE เป็นทางเลือก ตัวอย่างเช่น:
DECLARE @Course_ID INT = 2 IF (@Course_ID <=2) Select * from Guru99 where Tutorial_ID = 1
พิมพ์ดังต่อไปนี้:
การดำเนินการเงื่อนไขเท็จจะไม่ให้ผลลัพธ์ใดๆ ลองพิจารณาแบบสอบถามต่อไปนี้
DECLARE @Course_ID INT = 2 IF (@Course_ID <=0) Select * from Guru99 where Tutorial_ID = 1
ผลลัพธ์มัน
ซ้อนกัน IF...คำสั่งอื่น
ไม่เหมือนใคร การเขียนโปรแกรมภาษาคุณไม่สามารถเพิ่มคำสั่ง ELSE IF ภายในเงื่อนไข IF ELSE ใน SQL ได้ นี่คือเหตุผลที่คุณสามารถซ้อน IF ELSE ในคำสั่งสืบค้น SQL ได้ มันแสดงให้เห็นด้านล่าง:
DECLARE @age INT; SET @age = 60; IF @age < 18 PRINT 'underage'; ELSE BEGIN IF @age < 50 PRINT 'You are below 50'; ELSE PRINT 'Senior'; END;
- ในตัวอย่างนี้ รหัสจะพิมพ์ว่ายังไม่บรรลุนิติภาวะหากค่าของ @age ต่ำกว่า 18
- ถ้าไม่เช่นนั้น ส่วน ELSE จะถูกดำเนินการ ส่วน ElSE มี IF...ELSE แบบซ้อนกัน
- หากค่าของ @age ต่ำกว่า 50 ระบบจะพิมพ์ You are below 50 หากไม่มีเงื่อนไขใดเป็นจริง โค้ดจะพิมพ์ Senior
สรุป
- ตัวแปรคือวัตถุที่ทำหน้าที่เป็นตัวยึดตำแหน่ง
- กลุ่มคำสั่งควรเริ่มต้นด้วยคำหลัก BEGIN และปิดด้วยคำหลัก END
- Else เป็นทางเลือกที่จะใช้ในคำสั่ง IF... ELSE
- การซ้อนเงื่อนไข SQL IF ELSE ในคำสั่ง IF…ELSE อื่นก็เป็นไปได้เช่นกัน