مشخصات مقاله
-
1805
-
5.0
-
7279
-
1
-
0
توابع NULL در SQL
توابع ISNULL و NVL و IFNULL و COALESCE در SQL
به جدول “Products” در زیر نگاه کنید:
فرض کنید که وارد کردن مقدار در ستون “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