کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

توابع NULL در SQL

دوره های پیشنهادی

توابع ISNULL و NVL و IFNULL و COALESCE در SQL

به جدول “Products” در زیر نگاه کنید:

UnitsOnOrder
UnitsInStock
UnitPrice
ProductName
P_Id
15
16
10.45
Jarlsberg
1
*
23
32.56
Mascarpone
2
20
9
15.67
Gorgonzola
3

فرض کنید که وارد کردن مقدار در ستون “UnitsOnOrder” اختیاری بوده و می تواند حاوی مقدار NULL باشد.

دستور SELECT زیر را داریم:

SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)

FROM Products

در مثال فوق، اگر هر یک از مقادیر ستون “UnitsOnOrder” حاوی NULL باشند نتیجه آن NULL خواهد بود.

تابع ISNULL مایکروسافت برای مشخص کردن چگونگی رفتار با مقدار NULL استفاده می شود.

توابع NVL() ، IFNULL و COALESCE() نیز می توانند برای رسیدن به نتیجه ای مشابه استفاده شوند.

در این مورد می خواهیم تا مقدار NULL صفر در نظر گرفته شود.

در زیر، اگر “UnitsOnOrder” مقدار NULL باشد، دیگر مشکلی برای محاسبه وجود نخواهد داشت، زیرا تابع ISNULL اگر مقدارش NULL باشد صفر را بر می گرداند.

در MS Access

SELECT ProductName,UnitPrice*(UnitsInStock+IIF(ISNULL(UnitsOnOrder),0,UnitsOnOrder))

FROM Products

در SQL Server

SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))

FROM Products

در Oracle

در Oracle تابع ISNULL() وجود ندارد. اما می توانیم از تابع NVL() برای رسیدن به نتیجه ای مشابه استفاده کنیم:

SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))

FROM Products

در MySQL

در MySQL تابع ISNULL() وجود دارد. اما عملکرد آن کمی با تابع ISNULL() مایکروسافت متفاوت است.

در MySQL مانند آنچه در زیر می بینید می توانیم از تابع IFNULL()استفاده کنیم:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))

FROM Products

یا می توانیم از تابع COALESCE() مانند زیر استفاده کنیم:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))

FROM Products
1394/07/27 7282 1806
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...