گروه مقاله : SQL Server
تاريخ انتشار : 1394/02/07 - 09:40
كد :275

توابع NULL در SQL

توابع()ISNULL و ()NVL و ()IFNULL و () COALESCE :
به جدول “Products” در زیر توجه فرمایید:
 
P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder
1 Jarlsberg 10.45 16 15
2 Mascarpone 32.56 23  
3 Gorgonzola 15.67 9 20

 

فرض کنید که وارد کردن مقدار ستون UnitsOnOrder اختیاری باشد و ممکن است حاوی مقدار NULL باشد.
دستور  SELECT زیر را داریم :
SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products
در مثال فوق، اگر هر یک از مقادیر ستون UnitsOnOrder حاوی NULL باشند نتیجه آن NULL خواهد بود.
از تابع ()ISNULL استفاده می شود تا مشخص شود چگونه می خواهیم با مقدار NULL رفتار کنیم.
توابع ()NVL و ()IFNULL و ()COALESCE نیز می توانند برای رسیدن به نتیجه ای مشابه استفاده شوند.
در این مورد می خواهیم تا مقدار NULL صفر در نظر گرفته شود.
در زیر، اگر "UnitsOnOrder"مقدار NULL داشت، دیگر مشکلی برای محاسبه وجود ندارد، زیرا تابع ()ISNULL آن را به صفر بر می گرداند.
در 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
 
نظرات كاربران :