SQL Server IF...ELSE คำสั่งเงื่อนไข: T-SQL เลือกตัวอย่างแบบสอบถาม

เหตุใดคุณจึงต้องมี Conditional Statements?

คำสั่งแบบมีเงื่อนไขในเซิร์ฟเวอร์ SQL ช่วยให้คุณกำหนดตรรกะและการดำเนินการที่แตกต่างกันสำหรับเงื่อนไขที่แตกต่างกัน ช่วยให้คุณสามารถดำเนินการต่างๆ ตามเงื่อนไขที่กำหนดไว้ภายในคำสั่งได้ ในชีวิตจริง คุณกระทำหลายอย่างโดยขึ้นอยู่กับผลลัพธ์ของกิจกรรมหรือสถานการณ์อื่นๆ

ตัวอย่างคำสั่งกรณี SQL แบบเรียลไทม์ได้แก่:

  • พรุ่งนี้ถ้าฝนตก ฉันจะวางแผนการเดินทาง
  • หากตั๋วเครื่องบินจากเมืองของฉันมีราคาไม่ถึง 400 ดอลลาร์ ฉันจะไปเที่ยวพักผ่อนในยุโรป ไม่อย่างนั้นฉันจะเลือกสถานที่ท่องเที่ยวใกล้เคียงมากกว่า

ที่นี่ คุณจะเห็นว่าการกระทำอย่างหนึ่ง เช่น การเดินทางบนถนนด้านบนคือ ขึ้นอยู่กับเงื่อนไข กับผลอีกกิจกรรมหนึ่งคือ “พรุ่งนี้ฝนจะตก!”

ในทำนองเดียวกัน MS SQL ยังจัดเตรียมความสามารถในการรันคำสั่ง T-SQL แบบมีเงื่อนไข

ถ้า... คำสั่งอื่นใน SQL Server

In MSSQL, ถ้า…อย่างอื่น เป็นประเภทของ คำสั่งแบบมีเงื่อนไข.

คำสั่ง T-SQL ใด ๆ สามารถดำเนินการได้ตามเงื่อนไขโดยใช้ ถ้า... อย่างอื่น.

รูปด้านล่างอธิบาย IF ELSE ในเซิร์ฟเวอร์ SQL:

ถ้าและอย่างอื่นทำงานอย่างไร
if และ else ทำงานอย่างไร
  • หากประเมินสภาพได้ ทรูมันนี่ จากนั้นคำสั่ง 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'

IF...ELSE ที่มีค่าตัวเลขเพียงค่าเดียวในนิพจน์บูลีน

เงื่อนไข: FALSE

IF (1=2)
PRINT 'IF STATEMENT: CONDITION IS TRUE'
ELSE
PRINT 'ELSE STATEMENT: CONDITION IS FALSE'

IF...ELSE ที่มีค่าตัวเลขเพียงค่าเดียวในนิพจน์บูลีน

อัสสัมชั: สมมติว่าคุณมีตารางเป็น 'กูรู99' โดยแบ่งเป็น 2 คอลัมน์ 4 แถว ดังแสดงด้านล่างนี้:

IF...ELSE ที่มีค่าตัวเลขเพียงค่าเดียวในนิพจน์บูลีน

เราจะใช้ 'กูรู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

IF...ELSE พร้อมตัวแปรใน Boolean Expression

เงื่อนไข: 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 พร้อมตัวแปรใน Boolean Expression

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

IF...ELSE พร้อม Begin 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...ELSE พร้อม Begin End

คำสั่ง IF ที่ไม่มีอย่างอื่น

คุณสามารถใช้คำสั่ง IF ใน SQL ได้โดยไม่ต้องมีส่วน ELSE โปรดจำไว้ว่าเราระบุไว้ว่าส่วน ELSE เป็นทางเลือก ตัวอย่างเช่น:

DECLARE @Course_ID INT = 2

IF (@Course_ID <=2)
	Select * from Guru99 where Tutorial_ID = 1

พิมพ์ดังต่อไปนี้:

คำสั่ง IF ที่ไม่มีอย่างอื่น

การดำเนินการเงื่อนไขเท็จจะไม่ให้ผลลัพธ์ใดๆ ลองพิจารณาแบบสอบถามต่อไปนี้

DECLARE @Course_ID INT = 2

IF (@Course_ID <=0)
	Select * from Guru99 where Tutorial_ID = 1

ผลลัพธ์มัน

คำสั่ง IF ที่ไม่มีอย่างอื่น

ซ้อนกัน 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

ซ้อนกัน IF...คำสั่งอื่น

สรุป

  • ตัวแปรคือวัตถุที่ทำหน้าที่เป็นตัวยึดตำแหน่ง
  • กลุ่มคำสั่งควรเริ่มต้นด้วยคำหลัก BEGIN และปิดด้วยคำหลัก END
  • Else เป็นทางเลือกที่จะใช้ในคำสั่ง IF... ELSE
  • การซ้อนเงื่อนไข SQL IF ELSE ในคำสั่ง IF…ELSE อื่นก็เป็นไปได้เช่นกัน