هل يتم تقييم المعادلات الحسابية ضمنيا في نلف()
سؤال
بلدي سكل أساسيات 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
للتعبير الأول.
أيضا من الوثائق
إذا كانت كلتا الوسيطتين من أنواع البيانات الرقمية ، فحينئذ قاعدة بيانات أوراكل يحدد الوسيطة ذات الأسبقية الرقمية الأعلى ، ضمنيا يحول الوسيطة الأخرى إلى نوع البيانات هذا ، ويعيد ذلك نوع البيانات.إذا لم تكن الوسائط رقمية ، فيجب أن تكون من نفس نوع البيانات ، أو أوراكل بإرجاع خطأ.