به هنگام نوشتن دستور شرطی IF، ابتدا یک عبارت Condition برای آن فراهم نمایید که پس از ارزیابی مقدار true یا false را تولید کند. برای ایجاد شرط (Condition)، می توانید از متغیر و یک عملگر مقایسه ای منطقی استفاده نمایید. پیش از اینکه مفسر دستور را اجرا کند، شرط را ارزیابی می کند. اگر نتیجه ی آن true بود، در آن صورت مفسر دستور (Statement) را اجرا می کند.
ساختار شرطی IF…ELSE
دستور شرطی IF که در بالا معرفی شد تنها برای زمانی مناسب می باشد که یک دستور داریم و می خواهیم در صورت برقراری شرط اجرا کنیم. اما اگر شرط اول درست نبود چی؟
مثال زیر را درنظر بگیرید:
ECLARE
@Number
As
Decimal
(6, 2);
SET
@Number = 258.4062;
IF SIGN(@Number) > 0
PRINT N
'The square root of 258.4062 is '
+
TRY_CONVERT(
varchar
(12), SQRT(@Number));
ELSE
PRINT N
'You must provide a positive number'
;
GO
ساختار شرطی CASE...WHEN...THEN
کلیدواژه ی CASE به عنوان یک عملگر شرطی ایفای نقش می کند. این واژه مقداری را در نظر گرفته و آن را ارزیابی می کند، سپس با توجه به مقدار، نتیجه ی خاصی را برمی گرداند.
فرمول استفاده از دستور شرطی CASE به شرح زیر می باشد:
CASE
Expression
WHEN
Value1
THEN
Result
WHEN
Value2
THEN
Result
WHEN
Value_n
THEN
Result
END
در مثال زیر، یک حرف که نشانگر دانش آموز است به عنوان مقدار ارائه گردیده است. اگر آن حرف M یا m باشد، رشته ای تحت عنوان Male ایجاد شده و به عنوان نتیجه برگردانده می شود. اگر حرف f یا F به عنوان مقدار ارائه گردید، در آن صورت رشته ی متنی Female به عنوان نتیجه بازیابی می شود:
DECLARE
@CharGender
Char
(1),
@Gender
Varchar
(20);
SET
@CharGender = N
'F'
;
SET
@Gender =
CASE
@CharGender
WHEN
N
'm'
THEN
N
'Male'
WHEN
N
'M'
THEN
N
'Male'
WHEN
N
'f'
THEN
N
'Female'
WHEN
N
'F'
THEN
N
'Female'
END
;
SELECT
N
'Student Gender: '
+ @Gender;
GO
ساختار شرطی CASE...WHEN...THEN...ELSE
اگر مقدار ورودی case برای ما قابل پیشبینی باشد (از قبل بدانیم چه مقداری در اختیار case قرار می گیرد)، در آن صورت با case..when قابل مدیریت می باشد. اما چنانچه مقدار ورودی چیزی غیر از مقدار مورد انتظار ما می باشد، در آن صورت آن را با else اداره می کنیم.
CASE
Expression
WHEN
Value1
THEN
Result
WHEN
Value2
THEN
Result
WHEN
Value_n
THEN
Result
ELSE
Alternative
END
دستور Else، عملا زمانی بکار می رود که هیچ یک از مقادیر مشخص شده در دستورات WHEN با عبارت تعریف شده در CASE در فرمول فوق همخوانی نداشته باشد (عبارتی که در CASE مشخص شده با هر یک از مقادیر مقایسه می شود و اگر با هریک منطبق بود نتیجه ی تعیین شده برای آن مقدار به عنوان خروجی بازیابی می شود. اگر هیچ یک از مقادیر مشخص شده در دستورات WHEN با Expression در فرمول بالا منطبق نبود، در آن صورت مقدار مشخص شده در Else به عنوان خروجی برگردانده می شود).
چنانچه مقداری غیر قابل پیش بینی ارائه گردد، ولی دستور Else برای مدیریت آن در نظر گرفته نشده باشد، در آن صورت NULL به عنوان خروجی ارائه می گردد