استفاده از پارامتر نال پذیر در بخش WHERE کوئری دیتابیس
گاهی مواقع در زمان نوشتن یک SP در دیتابیس شما نیاز به استفاده از یک پارامتر ورودی دارید که مقدار Null نیز میتواند داشته باشد و از این متغیر میخواید در قسمت where کوئری خود استفاده کنید.
برای این کار بجای استفاده از یک IF و بررسی مقدار مورد نظر و نوشتن دو کوئری SELECT میتوانید از روش زیر استفاده کنید:
WHERE
(@Status IS NULL OR i.IsActive = @Status)
WHERE
(i.IsActive = ISNULL(@Status, i.IsActive))
در مورد بالا @Status یک پارامتر ورودی از نوع BIT میباشد که مقدار NULL نیز میتواند داشته باشد و میخواهیم فقط در صورتی که مقدار نال نبود از آن در شرط خود استفاده کنیم.
در کد اول فقط در صورتی که مقدار پارامتر نال نباشد شرط مورد نظر بررسی میشود. البته در این مورد به Index بر روی متغیری که شرط بر روی آن است ها باید دقت کنید، زیرا در بیشتر مواقع بصورت درست کار نمیکند
در مورد دوم نیز اگر پارامتر نال باشد شرط با خود مقدار متغیر بررسی میشود که تاثیر خاصی در خروجی نمیگذارد.