توابع NULL SQL
- صفحه قبل NULL در SQL
- صفحه بعدی نوع دادههای 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 محصولات
- صفحه قبل NULL در SQL
- صفحه بعدی نوع دادههای SQL