توابع NULL SQL

توابع ISNULL()، NVL()، IFNULL() و COALESCE() SQL

لطفاً جدول "Products" زیر را ببینید:

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder
1 کامپیوتر 699 25 15
2 چاپگر 365 36  
3 تلفن 280 159 57

اگر "UnitsOnOrder" انتخابی باشد و می‌تواند شامل NULL باشد.

ما از دستور SELECT زیر استفاده می‌کنیم:

SELECT ProductName, UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM محصولات

در مثال‌های بالا، اگر مقدار UnitsOnOrder NULL باشد، نتیجه NULL خواهد بود.

توابع ISNULL() مایکروسافت برای تعیین نحوه مدیریت NULL‌ها استفاده می‌شود.

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

در اینجا، ما می‌خواهیم NULL به 0 تبدیل شود.

در اینجا، اگر UnitsOnOrder NULL باشد، ممکن است برای محاسبه مضر باشد، بنابراین اگر مقدار NULL باشد، ISNULL() 0 را برمی‌گرداند.

SQL Server / MS Access

SELECT ProductName, UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM محصولات

Oracle

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

SELECT ProductName, UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
FROM محصولات

MySQL

MySQL نیز توابع مشابه ISNULL() دارد. اما روش کار آن با توابع ISNULL() مایکروسافت متفاوت است.

در MySQL، می‌توانیم از توابع IFNULL() استفاده کنیم، مثل این:

SELECT ProductName, UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM محصولات

یا می‌توانیم از توابع COALESCE() استفاده کنیم، مثل این:

SELECT ProductName, UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM محصولات