عبارة الشرط IF…ELSE في SQL Server: مثال على تحديد T-SQL
⚡ ملخص ذكي
IF…ELSE هي عبارة تحكم في التدفق في SQL Server تقوم بتشغيل كتلة واحدة من T-SQL عندما يتم تقييم شرط منطقي إلى صحيح، وكتلة بديلة اختيارية عندما يتم تقييم نفس الشرط إلى خطأ.

لماذا تحتاج إلى البيانات الشرطية؟
تساعدك العبارات الشرطية في SQL Server على تحديد منطق وإجراءات مختلفة لشروط مختلفة. فهي تتيح لك تنفيذ إجراءات مختلفة بناءً على الشروط المحددة داخل العبارة. في الواقع، تقوم بالعديد من الإجراءات التي تعتمد على نتيجة نشاط أو موقف آخر.
بعض الأمثلة العملية على العبارات الشرطية هي:
- إذا أمطرت غداً، فسأخطط لرحلة برية.
- إذا كانت تذاكر الطيران أقل من 400 دولار من مدينتي، فسأذهب في إجازة إلى أوروبا؛ وإلا، فسأفضل وجهة سياحية قريبة.
هنا، يمكنك أن ترى أن أحد الإجراءات، مثل رحلة الطريق المذكورة أعلاه، يعتمد بشكل مشروط على نتيجة نشاط آخر، وهو "ما إذا كانت ستمطر غدًا أم لا". وبالمثل، MS ملقم SQL كما يوفر إمكانية تنفيذ عبارة T-SQL بشكل مشروط.
عبارة IF…ELSE في SQL Server
في لغة MS SQL، تُعدّ عبارة IF…ELSE نوعًا من العبارات الشرطية. يمكن تنفيذ أي عبارة T-SQL شرطيًا باستخدام IF…ELSE. يوضح الشكل أدناه كيفية عمل فرعي IF وELSE في SQL Server:
- إذا تم تقييم الشرط إلى صحيح، فسيتم تنفيذ عبارات T-SQL التي تلي شرط IF في SQL Server.
- إذا تم تقييم الشرط إلى خطأ، فسيتم تنفيذ عبارات T-SQL التي تلي الكلمة المفتاحية ELSE.
- بمجرد تنفيذ عبارة IF T-SQL أو عبارة ELSE T-SQL، تستمر عبارات T-SQL الأخرى غير المشروطة في التنفيذ.
بناء جملة وقواعد عبارة IF…ELSE في لغة 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.
- آخر اختياري.
IF…ELSE مع قيمة عددية فقط في التعبير المنطقي
في هذا المثال الأول، يستخدم التعبير المنطقي قيمًا عددية فقط. انظر إلى الشرط أدناه، وهو صحيح دائمًا لأن 1 يساوي 1.
الحالة: صحيح
IF (1=1) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
يؤدي تشغيل الاستعلام مع الشرط الصحيح (1=1) إلى طباعة رسالة فرع IF:
الحالة: خطأ
IF (1=2) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
في حالة الشرط الخاطئ (1=2)، يتم تشغيل فرع ELSE بدلاً من ذلك:
افترض أن لديك جدولًا باسم 'Guru99' مع عمودين وأربعة صفوف، كما هو موضح أدناه. سنستخدم هذا 'Guruجدول 99 في الأمثلة التالية.
IF…ELSE مع متغير في تعبير منطقي
بدلاً من الأرقام الثابتة، يمكن للتعبير المنطقي مقارنة متغير. المثال التالي يُعلن عن متغير عدد صحيح ويختبر قيمته.
الحالة: صحيح
DECLARE @Course_ID INT = 4 IF (@Course_ID = 4) Select * from Guru99 where Tutorial_ID = 4 ELSE Select * from Guru99 where Tutorial_ID != 4
لأن قيمة @Course_ID تساوي 4، يتم تشغيل فرع IF ويعيد الصف الذي تكون فيه قيمة Tutorial_ID تساوي 4:
الحالة: خطأ
DECLARE @Course_ID INT = 4 IF (@Course_ID != 4) Select * from Guru99 where Tutorial_ID = 4 ELSE Select * from Guru99 where Tutorial_ID != 4
الشرط هنا خاطئ، لذا يتم تشغيل فرع ELSE ويعيد كل صف حيث لا يكون Tutorial_ID هو 4:
إذا... وإلا مع بداية... نهاية
عندما يتطلب الفرع تنفيذ أكثر من عبارة واحدة، قم بتضمين العبارات داخل كتلة BEGIN…END. المثال أدناه ينفذ عبارتي SELECT في كل فرع.
الحالة: صحيح
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
بما أن قيمة @Course_ID أقل من أو تساوي 2، فإن كتلة IF تقوم بتشغيل كلا عبارتي SELECT الموجودتين داخل BEGIN…END:
الحالة: خطأ
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
هذه المرة الشرط خاطئ، لذا فإن كتلة ELSE تنفذ عبارتي SELECT الخاصتين بها:
عبارة IF بدون ELSE
يمكنك استخدام عبارة 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 المتداخلة
على عكس البعض الآخر لغات البرمجةلا يوفر SQL Server عبارة ELSE IF داخل شرط IF…ELSE. بدلاً من ذلك، يمكنك تضمين شرط IF…ELSE داخل شرط آخر، كما هو موضح أدناه:
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;
بالنسبة لعمر 60 عامًا، فإن عبارة IF…ELSE المتداخلة تطبع النتيجة التالية:
- يقوم الكود بطباعة "أقل من السن القانونية" إذا كانت قيمة @age أقل من 18.
- وإلا، يتم تنفيذ جزء ELSE. يحتوي جزء ELSE على عبارة IF…ELSE متداخلة.
- إذا كانت قيمة @age أقل من 50، فسيتم طباعة "عمرك أقل من 50". أما إذا لم يتحقق أي من هذه الشروط، فسيتم طباعة "كبير السن".











