0

آموزش SQL

 
parisaexp
parisaexp
کاربر نقره ای
تاریخ عضویت : مهر 1392 
تعداد پست ها : 888
محل سکونت : اصفهان

پاسخ به:آموزش SQL
دوشنبه 10 آذر 1393  10:10 PM

آموزش SQL-تابع IsNull

توابع ISNULL و NVL و IFNULL و COALESCE  

 

Wiki

به جدول 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 زیر را داریم:

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

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

از تابع ISNULL استفاده می شود تا مشخص کنیم چگونه می خواهیم با مقدار NULL رفتار کنیم.

توابع NVL و IFNULL و COALESCE نیز می توانند برای رسیدن به نتیجه ای مشابه استفاده شوند.

در این مورد می خواهیم تا مقدار NULL صفر در نظر گرفته شود.

در زیر، اگر UnitsOnOrder مقدار NULL داشت، دیگر مشکلی برای محاسبه وجود ندارد، زیرا تابع ISNULL آن را به صفر بر می گرداند.

SQL Server / MS Access

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 در ماکروسافت (ACCESS,SQL SERVER) متفاوت است.

در MySQL از تابع IFNULL برای این امر استفاده می کنیم:

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

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

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

 

لِکُلِّ شَیْ‏ءٍ زَکَاةٌ وَ زَکَاةُ الْعَقْلِ احْتِمَالُ الْجُهَّال‏

برای هر چیزی زکاتیست و زکات عقل تحمّل نادانان است.

تشکرات از این پست
دسترسی سریع به انجمن ها