1 دقیقه میانگین مدت زمان مطالعه است

گاهی مواقع در زمان نوشتن یک SP در دیتابیس شما نیاز به استفاده از یک پارامتر ورودی دارید که مقدار Null نیز میتواند داشته باشد و از این متغیر میخواید در قسمت where کوئری خود استفاده کنید.
برای این کار بجای استفاده از یک IF و بررسی مقدار مورد نظر و نوشتن دو کوئری SELECT میتوانید از روش زیر استفاده کنید:

WHERE
  (@Status IS NULL OR i.IsActive = @Status)
WHERE
  (i.IsActive = ISNULL(@Status, i.IsActive))

در مورد بالا @Status یک پارامتر ورودی از نوع BIT میباشد که مقدار NULL نیز میتواند داشته باشد و میخواهیم فقط در صورتی که مقدار نال نبود از آن در شرط خود استفاده کنیم.
در کد اول فقط در صورتی که مقدار پارامتر نال نباشد شرط مورد نظر بررسی میشود. البته در این مورد به Index بر روی متغیری که شرط بر روی آن است ها باید دقت کنید، زیرا در بیشتر مواقع بصورت درست کار نمیکند

در مورد دوم نیز اگر پارامتر نال باشد شرط با خود مقدار متغیر بررسی میشود که تاثیر خاصی در خروجی نمیگذارد.