الاتصال بالبيانات من نوع NULL عن طريق تابع يدعى ISNULL()

15 02 2009

لربما كنت واحدا من المبرمجين الذين كان لهم العديد من التجارب في غمار قواعد البيانات, وبالتالي ستكون الحالة 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é                                              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.


الإجراءات

معلومات

تعليق واحد

24 02 2009
معجب بعبد الكريم كنعان

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.

أضف تعليق