توابع Null (Null Functions)
«NULL» یعنی مقدار ناموجود. توابع NULL کمک می کنند جای خالی را پر کنیم. بنابراین، محاسبات خراب نمی شوند و گزارش ها پایدار می مانند. امروز با IFNULL/ISNULL/COALESCE/NVL آشنا می شویم.
مشکل NULL در محاسبات
اگر یکی از جمع ها NULL باشد، کل نتیجه NULL می شود. مثل کلاس وقتی یک نمره نداریم، معدل خراب می شود.
SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder);
FROM Products;
MySQL: IFNULL و COALESCE
تابع «IFNULL» اگر مقدار NULL بود، مقدار جایگزین می دهد. «COALESCE» اولین مقدار غیر NULL از لیست را برمی گرداند.
SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0));
FROM Products;
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0));
FROM Products;
SQL Server: ISNULL و COALESCE
در SQL Server از «ISNULL» استفاده کن. همچنین «COALESCE» استاندارد و چندپارامتری است.
SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0));
FROM Products;
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0));
FROM Products;
MS Access: IsNull و IIF
در Access با «IsNull» و «IIF» مقدار جایگزین بده.
SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder));
FROM Products;
Oracle: NVL و COALESCE
در Oracle از «NVL» استفاده کن. همچنین «COALESCE» استاندارد است.
SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0));
FROM Products;
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0));
FROM Products;
گام های عملی سریع
- ستون های احتمالاً NULL را شناسایی کن.
- مقدار جایگزین منطقی تعیین کن.
- تابع مناسب پایگاه داده را انتخاب کن.
- نتیجه را تست و مانیتور کن.
نکته: برای سازگاری بین سیستم ها از CASE یا COALESCE استفاده کن.
جمع بندی سریع
- NULL نتیجه محاسبه را NULL می کند.
- IFNULL/ISNULL مقدار جایگزین می دهند.
- COALESCE استاندارد و چندپارامتری است.
- NVL مخصوص Oracle است.