توابع NULL

از ویکی‌کد
پرش به ناوبری پرش به جستجو
Main Page Tutorial
Sql-menu.png
موارد آموزشی
۱خانه
۲مقدمه
۳دستور زبان
۴عبارت SELECT
۵عبارت SELECT DISTINCT
۶شرط WHERE
۷عملگرهای AND, OR, NOT
۸کلمهٔ کلیدی ORDER BY
۹عبارت INSERT INTO
۱۰مقدارهای NULL
۱۱عبارت UPDATE
۱۲عبارت DELETE
۱۳عبارت‌های TOP ،LIMIT یا ROWNUM
۱۴توابع MIN و MAX
۱۵توابع COUNT ،AVG و SUM
۱۶عملگر LIKE
۱۷کاراکترهای Wildcard
۱۸عملگر IN
۱۹عملگر BETWEEN
۲۰نام‌های مستعار (Aliases)
۲۱متصل کردن (Join)
۲۲کلمهٔ کلیدی INNER JOIN
۲۳کلمهٔ کلیدی LEFT JOIN
۲۴کلمهٔ کلیدی RIGHT JOIN
۲۵کلمهٔ کلیدی FULL OUTER JOIN
۲۶دستور Self JOIN
۲۷عملگر UNION
۲۸عبارت GROUP BY
۲۹عبارت HAVING
۳۰عملگر EXISTS
۳۱عملگرهای ANY و ALL
۳۲عبارت SELECT INTO
۳۳عبارت INSERT INTO SELECT
۳۴عبارت CASE
۳۵توابع NULL
۳۶Stored Procedure
۳۷یادداشت‌ها
بانک اطلاعاتی
مرجع
مثال‌ها

توابع IFNULL(), ISNULL(), COALESCE() و NVL()

به جدول "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 زیر نگاه کنید:

1 SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder)
2 FROM Products;

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

راه حل‌ها

MySQL

تابع IFNULL() در MySQL اگر عبارتی NULL باشد، امکان برگرداندن مقدار جایگزین را فراهم می‌کند:

1 SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
2 FROM Products;

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

1 SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
2 FROM Products;

SQL Server

تابع ISNULL() در SQL SERVER در صورتی که عبارتی NULL شود، امکان برگرداندن یک مقدار جایگزین را فراهم می‌کند:

1 SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
2 FROM Products;

MS Access

تابع IsNull() در MS Access اگر مقدار عبارتی null باشد، TRUE(-1) و در غیر انصورت FALSE(0) برمی‌گرداند:

1 SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
2 FROM Products;

Oracle

تابع NVL() در Oracle نیز به همین نتیجه دست می‌یابد:

1 SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
2 FROM Products;



منابع آموزشی