هل يتم تقييم المعادلات الحسابية ضمنيا في نلف()

StackOverflow https://stackoverflow.com//questions/21043870

  •  21-12-2019
  •  | 
  •  

سؤال

بلدي سكل أساسيات 1 امتحان دليل الدول,

select NULLIF(1234, 123+1) from dual;

لا يتم تقييم المعادلة الحسابية ضمنيا...

ومع ذلك ، عندما أقدم الاستعلام أدناه النتيجة هي null - يبدو أن 123 + 1 هو تقييم (على الرغم من أنني أعرف أن الاستعلامات مختلفة).

select NULLIF(124, 123+1) from dual;

وبالتالي, وهو الصحيح (ل 1ز0-051 امتحان, على أي حال)?يتم تقييم التعبيرات أم لا?

هل كانت مفيدة؟

المحلول

Nullif() وظيفة تقييم كل من الحجج والعوائد NULL إذا argument1 يساوي argument2.في قضيتك 123+1 لا يساوي 1234. 123+1 يساوي 124 لا 1234.

والنتيجة هي فارغة

لا يمكن أن يكون null في قضيتك.

SQL> select nullif(1234, 123+1) as res
   2    from dual;

       RES
----------
      1234



SQL> select nullif(1234, 1233+1) as res
  2    from dual
  3  ;

       RES
----------
 NULL

متابعة: بلدي 2 سنتا

ما سبق NULLIF ما يعادل الحالة أدناه

CASE WHEN 1234=123+1 THEN NULL ELSE 1234 END

لا يمكنك تحديد الحرفي NULL للتعبير الأول.

أيضا من الوثائق

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top