سبد خرید 0

وبلاگ

بررسی توابع ISNULL,NULLIF,COALESCE در SQL Server

یکی از امکانات پایگاه داده sql server، تعداد زیادی توابع توکار هست که میتوانیم در کوئری های از این توابع برای کارکرد های مختلف استفاده نماییم. در این مقاله به توضیح چند مورد از آنها خواهیم پرداخت .

یکی از مواردی که در اکثر دیتابیس ها یافت می شود وجود ستون هایی با مقدار NULL است ، که کار کردن با آنها  نیازمند آشنایی با توابعی می باشد تا بدون هیچ خطایی بتوانیم کوئری هایمان را اجرا کنیم .

()ISNULL :

این تابع از توابع مایکروسافت می باشد که دو پارامتر از ورودی دریافت می کند ، ساختار آن به صورت زیر می باشد :

 تابع ISNULL مقدار پارامتر اول را چک می کند و اگر مقدار پرامتر اول NULL باشد آن را با مقدار دوم جایگزین می کند (مقدار پارامتر دوم را به عنوان خروجی بر میگرداند) در غیر اینصورت مقدار عبارت اول به عنوان خروجی برگردانده می شود   .

مثال 1:

جدول زیر را در نظر بگیرید :

قصد داریم کوئری ای بنویسیم که تعداد فروش  و تعداد موجود هر کالا را در مبلغ آن ضرب کند و درآمد کل را نمایش دهد :برای اینکار نیازمند نوشتن همچین کوئری هستیم :

اگر کوئری فوق اجرا شود برای ردیف سوم مقدار NULL  برگردانده می شود  و دلیل آن هم روشن است ، چون مقدار تعداد فروش برای رکورد سوم برابر با NULL می باشد . برای تصحیح این کوئری می توانیم از تابع INSULL استفاده کنیم و مقدار ستون مورد نظر را اگر NULL بود  با  صفر (0) جایگزین کنیم :

نکته : انجام عمل جمع بر روی مقدار null و عدد و یا رشته ای باعث برگرداندن مقدار NuLL خواهد شد  به همین دلیل در رکورد سوم شاهد مقدار NULL خواهیم بود .

()NULLIF :

این تابع دو عبارت از ورودی دریافت می کند و اگر مقدار هر دو عبارت برابر باشند مقدار NULL را بر میگرداند  و اگر مقدار دو عبارت ورودی برابر نباشند مقدار عبارت اول را به عنوان خروجی برمی گرداند . ساختار این تابع به صورت زیر می باشد :

مثال :

()COALESCE:

این تابع چندین عبارت از ورودی  دریافت می کند و اولین عبارتی را که NULL نباشد را بر می گرداند .

ساختار دستور آن به صورت زیر می باشد :

 جدول زیر را در نظر بگیرید :

برای هر کاربر سه فیلد تلفن وجود دارد که حداقل یک فیلد آن برای هر کاربر دارای مقدار می باشد ، قصد داریم کوئری بنویسیم که یک تلفن از هر کاربر را بر گرداند به شرط اینکه مقدار بر گردانده شده NULL نباشد . مشخص نیست که کدام فیلد برای هر کاربر دارای مقدار می باشد پس در این گونه موارد می توانیم از تابع  COALESCE استفاده کنیم :

نکته : حداقل یک پارامتر ورودی این تابع باید غیر NULL باشد در غیر اینصورت با خطای زیر برخورد خواهید کرد :


 

اشتراک گذاری:

مطالب زیر را حتما مطالعه کنید

دیدگاهتان را بنویسید

keyboard_arrow_up