لربما كنت واحدا من المبرمجين الذين كان لهم العديد من التجارب في غمار قواعد البيانات, وبالتالي ستكون الحالة NULL من الحالات المشهورة, دعنا في هذه المقالة نتعرف على أحد التوابع الذي يوفر لنا المرونه في التعامل مع حالة NULL
يوجد في الواقع العديد من التوابع الخاصة بالتعامل مع NULL، أحد هذه التوابع هو ISNULL().
التابع ISNULL() يقبل متحول Variable أو تعبير Expression، ويقوم بعملية إختبار فيما إذا كانت القيمة هي NULL، إذا كانت القيمة هي NULL، فإن التابع سوف يعيد قيمة محددة بدلا من قيمة الـ NULL، أما إذا كانت قيمة التعبير ليست NULL، فإن التابع سوف يعيدها كقيمة إن شكل التابع هو كما يلي:
|
ISNULL ( check_expression , replacement_value ) |
على سبيل المثال:
|
ISNULL Expression |
Value Returned |
|
ISNULL(NULL, 5) |
5 |
|
ISNULL(5, 15) |
5 |
|
ISNULL(MyColumnName, 0) where MyColumnName IS NULL |
0 |
|
ISNULL(MyColumnName, 0) where MyColumnName = 3 |
3 |
|
ISNULL(MyColumnName, 0) where MyColumnName =’Fred Farmer’ |
Fred Farmer |
الان دعنا نرى استخدام التابع في الاستعلام:
|
Select cu.CompanyName, IsNull(Cast ((Select Min(o.OrderDate) From Orders As o Where o.CustomerID = cu.CustomerID) As varchar), ‘ Never Ordered’) As ‘Order Date’ From Customers As cu |
هناك سطران بدون تعليمة ISNULL() كانا سينتجان كما يلي:
|
… FISSA Fabrica Inter. Salchichas S.A. NULL … Paris spécialités NULL … |
ولكن باستخدامه سينتجان كما يلي:
|
… FISSA Fabrica Inter. Salchichas S.A. NEVER ORDERED … Paris spécialités NEVER ORDERED … |
تم استخدام التابع CAST() حتى يعمل هذا الاستعلام والسبب في ذلك لأن ناتج التنفيذ سينتج سيعطي بيانات من نوع تاريخ(DateTime) طبعا للعمود Order Date، وبالتالي عندما يصل التنفيذ إلى أول NULL سيتولد خطأ وذلك بسبب أن عبارة Never Ordered لا يمكن تحويلها إلى تاريخ.
الأمثلة مطبقة على قاعدة بيانات Northwind.
أخذت هذه المقالة من كتاب Beginning SQL Server 2005.
your modawane is very nice and the subjects is very benefit so thanks.alot an hope to
be a expert in DotNet in the future.