وظيفة Oracle NVL

Wzyft Oracle Nvl



القيمة الخالية هي حقل تم تركه فارغًا أو ليس له قيمة معينة.

القيم الفارغة شائعة في قواعد البيانات ، خاصة عند استيراد البيانات الخارجية. لذلك ، ما لم يكن العمود يحتوي على قيد لمنع القيم NULL ، فمن المحتمل أن يستخدم مشغل قاعدة البيانات قيمة NULL لقيمة مفقودة.







على الرغم من أن قيم NULL شائعة ، إلا أنها يمكن أن تؤدي إلى مشكلات في قاعدة البيانات لأن قاعدة البيانات ليس لها قيمة للعمل معها. لذلك ، يعد تطبيق الإجراءات للتعامل مع القيم الخالية في استعلاماتك ممارسة جيدة.



في هذا المنشور ، سوف نتعلم كيفية تحويل قيم NULL في جدول معين لاحتواء قيمة افتراضية من غير المرجح أن تسبب أخطاء تشغيل في قاعدة البيانات الخاصة بك.



وظيفة Oracle NVL

كما ذكرنا ، تسمح لنا هذه الوظيفة باستبدال القيم الفارغة بقيم أكثر أهمية. يتم توفير بناء جملة الوظيفة أدناه:





NVL ( expr1 ، expr2 ) ؛

تقبل الوظيفة وسيطين رئيسيين:

expr1 و expr2 - تحدد هذه المعلمة القيمة التي سيتم اختبارها لقيم NULL. إذا كانت قيمة expr1 فارغة ، فستُرجع الدالة قيمة expr2.



يمكن أن يحتوي كلا التعبيرين على أنواع بيانات متشابهة أو مختلفة. في حالة اختلاف أنواع البيانات المقابلة ، قد يقوم مشغل قاعدة البيانات بإجراء تحويل ضمني للسماح بالتوافق مع أنواع البيانات. إذا كان من المستحيل تحويل أنواع البيانات المقابلة ، فسيقوم محرك قاعدة البيانات بإحداث خطأ.

مثال على استخدام دالة Oracle NVL ()

يوضح المثال التالي الاستخدام الأساسي لوظيفة NVL ():

مثال 1

خذ بعين الاعتبار المثال التالي:

تحديد مستوى ( 'أهلا' و 'العالمية' ) من مزدوج

في المثال السابق ، نستخدم الدالة NVL () لاختبار ما إذا كانت السلسلة 'hello' هي قيمة NULL. نظرًا لأن القيمة المقدمة ليست فارغة ، ستعيد الوظيفة السلسلة النصية 'hello'.

مثال 2

ضع في اعتبارك المثال الثاني الموضح أدناه:

تحديد مستوى ( باطل، 'العالمية' ) من مزدوج

في هذه الحالة ، نظرًا لأن التعبير الأول هو قيمة NULL ، فسيعيد الاستعلام السلسلة الثانية كما هو موضح أدناه:

مثال 3

يمكننا أيضًا استخدام الدالة NVL () لاستبدال قيم NULl في جدول قاعدة البيانات. ضع في اعتبارك جدول الموظفين الموضح أدناه:

تحديد FIRST_NAME ، LAST_NAME ، EMAIL ، SALARY ، COMMISSION_PCT من EMPLOYEES emp ؛

الجدول الناتج:

كما نرى ، يحتوي عمود Commission_pct على قيم NULl. يمكننا إنشاء استعلام لاستبدال القيم الفارغة من العمود Commission_pct بـ 0 ، كما هو موضح في المثال أدناه:

تحديد FIRST_NAME ، LAST_NAME ، EMAIL ، SALARY ، nvl ( COMMISSION_PCT ، 0 )
من EMPLOYEES emp؛

في استعلام المثال السابق ، استخدمنا الدالة NVL () لاختبار القيمة في العمود Commission_pct للقيم الفارغة. إذا كانت هناك قيمة NULL ، فإننا نعيد 0. وإلا فإننا نعيد القيمة الأصلية.

يجب أن يسمح لنا ذلك باستبدال قيم NULL في العمود بـ 0 ، كما هو موضح في الجدول الناتج أدناه:

يمكننا استخدام هذا مع بيان UPDATE أو تخزين القيمة الناتجة في عرض الجدول.

استنتاج

في هذا البرنامج التعليمي ، تعلمت كيفية استخدام وظيفة Oracle NVL () لاستبدال القيم الخالية بالقيم الافتراضية. من الجيد أن تضع في اعتبارك أنه على الرغم من أن وظيفة NVL () تشبه إلى حد كبير وظيفة COALESCE () ، إلا أن الدالة NVL () يمكنها فقط إرجاع قيمة واحدة. في الوقت نفسه ، يمكن أن تُرجع الدالة coalesce () قيمًا متعددة.

إذا كنت تبحث عن دالة يمكنها أن تأخذ أكثر من وسيطتين دون استخدام وظيفة coalesce () ، ففكر في وظيفة NVL2 ().