اپراتورهای شعبه در فرمان Select. تبدیل NVL برای انواع داده های مختلف آزمایشگاه

تابع to_char با اعداد

توابع تبدیل داده ها به سایر انواع داده ها. to_char (شماره) یک عدد را به متن تبدیل می کند. to_number تبدیل متن به شماره.

SELECT TO_CHAR (123) از دوگانه خط 123 را باز کنید، To_number (12345 "را انتخاب کنید) از دوگانه شماره 12345 را بازگردانید.

کار آزمایشگاهی. تغییر فرمت اعداد خروجی

تغییرات در قالب مقادیر عددی در اوراکل SQL، تابع to_char برای کار با مقادیر عددی.

وظیفه:

یک درخواست را بنویسید که اطلاعات مربوط به نام، نام خانوادگی و حقوق کارکنان را از جدول HR.Employees در فرمت نشان داده شده در شکل نشان داده شود. 3.4-1:

شکل. 3.4. -1

در عین حال، داده ها باید به گونه ای مرتب شوند که ردیف ها برای کارکنان با بزرگترین حقوق و دستمزد اول نمایش داده شوند.

توجه داشته باشید:

برخی از دستمزد در شکل. 3.4-1 تغییر کرده است، بنابراین ممکن است با ارزش های شما همخوانی نداشته باشند.

تصمیم گیری:

first_name را به عنوان "نام"، last_name به عنوان "نام خانوادگی"، to_char (حقوق، L9999999999.99 ") به عنوان" سالاد "از HR.Employees سفارش توسط حقوق و دستمزد.

توابع to_number و to_date

تابع تبدیل ردیف در تاریخ T_Date (رشته، فرمت). فرمت های احتمالی در حال حاضر در نظر گرفته شده است، بنابراین من بعضی از نمونه هایی از استفاده از این تابع را ارائه خواهم داد. مثال ها:

انتخاب کنید to_date (01.01.2010، `dd.mm.yyyy) از جانب. DUAL تاریخ را بازگرداند `01.01.2010"؛

انتخاب کنید to_date (01.jan.2010، `dd.mon.yyyy) از جانب. دوگانه تاریخ "01.01.2009" را بازگرداند؛

انتخاب کنید to_date ("15-01-10"، `dd-mm-yy") از جانب. دوگانه تاریخ را بازگرداند `01/15/2010."

تابع تبدیل ردیف به مقدار عددی to_number (رشته، فرمت). رایج ترین فرمت ها در جدول ذکر شده است، بنابراین استفاده از این تابع را بر روی نمونه ها در نظر بگیرید. مثال ها:

انتخاب کنید to_number (`100") از جانب. دوگانه شماره 100 را انتخاب کنید. انتخاب کنید to_number (`0010.01،" 9999d99) از جانب. دوگانه شماره 10.01 را بازگرداند؛

انتخاب کنید to_number ("500،000"، "999G999") از جانب. دوگانه شماره 500000 را باز می کند.

عنصر RR در قالب تاریخ

عنصر فرمت تاریخ و زمان RR شبیه به عنصر فرمت تاریخ و زمان YY است، اما انعطاف پذیری بیشتری برای ذخیره مقادیر تاریخ و در قرن های دیگر فراهم می کند. یک عنصر از تاریخ های RR و فرمت زمان به شما اجازه می دهد تا تاریخ های قرن بیست و یکم را در قرن بیست و یکم ذخیره کنید، که تنها دو رقم آخر سال را نشان می دهد.

اگر دو عدد آخر سال گذشته از سال جاری 00 تا 49 سال باشد، سال بازگشت دو رقم اول را در سال جاری دارد.

اگر دو عدد آخر سال جاری از 50 تا 99، 2 رقم اول سال بازگشتی 1 بیشتر از 2 رقم اول سال جاری باشد.

اگر دو عدد آخر سال جاری 00 تا 49 باشد، 2 رقم اول سال بازگشتی 1 کمتر از 2 رقم اول سال جاری است.

اگر دو شخصیت آخر سال جاری از 50 تا 99 سال گذشته، سال بازگشت، همان دو رقم اول را در سال جاری داشته باشد.

ویژگی NVL

عملکرد NVL معمولا اغلب اعمال می شود. این تابع دو پارامتر را دریافت می کند: NVL (EXPR1، exerg2). اگر اولین پارامتر EXPR1 برابر با صفر نیست، تابع مقدار آن را باز می گرداند. اگر اولین پارامتر صفر باشد، پس از آن تابع مقدار پارامتر دوم Exerg2 را باز می کند.

به عنوان مثال: انتخاب NVL (Supplier_City، N / A ") از تامین کنندگان:

بیانیه SQL به n / "اگر فیلد supplier_city حاوی مقدار صفر باشد، بازگشت خواهد کرد. در غیر این صورت، تامین کننده ارزش را به ارمغان می آورد.

مثال دیگری از استفاده از عملکرد NVL در اوراکل / PLSQL عبارتند از:

selective Supplier_id، NVL (Supplier_Desc، Suppler_name) از تامین کنندگان.

این برنامه SQL بازگشت خواهد کرد supplier_name فیلد، اگر supplier_desc. حاوی مقدار صفر است. در غیر این صورت او بازگشت خواهد کرد supplier_desc..

آخرین مثال: استفاده از عملکرد NVL در اوراکل / PLSQL این است: انتخاب NVL (کمیسیون، 0) از فروش؛

این بیانیه SQL به 0 رسید کمیسیون این فیلد حاوی صفر است. در غیر این صورت، ممکن است بازپرداخت شود کمیسیون رشته.

تبدیل NVL برای انواع داده های مختلف

برای تبدیل یک مقدار نامحدود به عملکرد واقعی، عملکرد NVL استفاده می شود: nvl ( بیان 1، بیان 2), جایی که:

بیان 1- منبع یا مقدار محاسبه شده که می تواند نامشخص باشد.

بیان 2 - یک مقدار که به جای یک مقدار نامحدود جایگزین می شود.

توجه داشته باشید: عملکرد NVL را می توان برای تبدیل هر نوع داده استفاده کرد، اما نتیجه همیشه همان نوع است بیان 1

تبدیل NVL برای انواع مختلف:

شماره - NVL. (ستون عددی، 9).

char یا varchar2 - nvl (نمادها | ستون، "در دسترس نیست").

کار آزمایشگاهی. استفاده از عملکرد NVL

ویژگی NVL برای کار با ارزش های نامشخص در اوراکل SQL.

وظیفه:

یک درخواست را بنویسید که اطلاعات مربوط به نام و نام خانوادگی کارکنان را از جدول HR.Employees نمایش دهد.، همچنین پیشنهاد کمیسیون (Community Comment_PCT) برای کارمند. در عین حال، برای کسانی که برای کسانی که کمیسیون تعریف نشده اند، لازم است که مقدار 0. را نشان دهیم. نتیجه پرس و جو باید به صورت پیشنهادی ارائه شود. 3.5-1.

شکل. 3.5 -1 (مقادیر از خط 51 شروع می شود)

تصمیم گیری:

کد درخواست مربوطه ممکن است:

first_name را به عنوان "نام"، last_name به عنوان "نام خانوادگی"، nvl (comments_pct، 0) به عنوان "نرخ کمیسیون" از hr.emplootees انتخاب کنید.

ویژگی NVL

عملکرد NVL معمولا اغلب اعمال می شود. این تابع دو پارامتر دریافت می کند: NVL (EXPR1، EXPR2). اگر اولین پارامتر EXPR1 برابر با صفر نیست، تابع مقدار آن را باز می گرداند. اگر اولین پارامتر صفر باشد، تابع مقدار پارامتر دوم EXPR2 را به دست می آورد.

در نظر گرفتن مثال عملی. میدان COMP در جدول EMP ممکن است حاوی مقادیر صفر باشد. هنگام انجام پرس و جو فرم:

EMPNO را انتخاب کنید، Ename، Comm، NVL (Comm، 0) NVL_COMM

از scott.emp

مقدار صفر توسط صفر جایگزین خواهد شد. لطفا توجه داشته باشید که در مورد شکل گیری ارزش با کمک عملکرد، آن را به نام مستعار اختصاص داده شده است. نتایج درخواست خواهد شد:

امپراتوری ename comm nvl_comm
7369 اسمیت 0
7499 آلن 300 300
7521 بخش 500 500
7566 جونز 0
7654 مارتین 1400 1400
7698 بیل 0
7782 کلارک 0
7839 پادشاه. 0
7844 ترنر 0 0
7900 جیمز 0
7902 آب کم عمق 0
7934 میلر 0

سقف (n)

عملکرد CEIL کوچکترین عدد صحیح، بزرگتر یا برابر تعداد N. مثلا:

CEIL (100) X1، CEIL (-100) X2، CEIL (100.2) X3، CEIL (-100.2) X4 را انتخاب کنید

از دوگانه

تابع trunc (n [، m])

تابع TRUNC تعداد علامت های n را به علائم m پس از نقطه اعشار بازگرداند. پارامتر M ممکن است نشان داده شود - در این مورد، n به طور کامل کاهش یافته است.

Trunc (100.25678) X1، Trunc (-100.25678) X2، Trunc (100.99) X3 را انتخاب کنید

Trunc (100.25678، 2) X4

از دوگانه

علامت (n) تابع

تابع نشانه تعداد اعداد را تعیین می کند. اگر N مثبت باشد، پس از آن تابع باز می شود 1. اگر منفی باز شود -1. اگر صفر صفر باشد، سپس 0 بازگردانده می شود. به عنوان مثال:

علامت را انتخاب کنید (100.22) X1، Sign (-100.22) X2، علامت (0) X3

از دوگانه

یکی از ویژگی های جالب این ویژگی امکان انتقال M برابر با صفر است - خطاهای تقسیم را به 0 نمی رساند.

عملکرد قدرت (n، m)

تابع قدرت تعداد N را به درجه m می رساند. درجه ممکن است کسری و منفی باشد، که به طور قابل توجهی قابلیت های این تابع را گسترش می دهد.

انتخاب قدرت (10، 2) x1، قدرت (100، 1/2) x2،

قدرت (1000، 1/3) x3، قدرت (1000، -1/3) x4

از دوگانه

x1 x2 x3 x4
100 10 10 0,1

در برخی موارد، هنگام فراخوانی این ویژگی، ممکن است یک استثنا رخ دهد. مثلا:

POWER را انتخاب کنید (-100، 1/2) X2

از دوگانه

که در این مورد تلاش برای محاسبه یک ریشه مربع از یک عدد منفی ساخته شده است، که منجر به خطای ORA-01428 "استدلال خارج از محدوده" خواهد شد.

تابع sqrt (n)

این ویژگی باز می گردد ریشه دوم از شماره n مثلا:

SQRT (100) X را انتخاب کنید

از دوگانه

توابع Exp (n) و ln (n)

تابع EXP به درجه N کاهش می یابد و عملکرد LN محاسبه لگاریتم طبیعی از N (با N، N، N، N باید بیشتر از صفر باشد). مثال:

SELECT EXP (2) X1، LN (1) X2، LN (EXP (2)) X3

ویژگی NVL

عملکرد NVL معمولا اغلب اعمال می شود. این تابع دو پارامتر دریافت می کند: NVL (EXPR1، EXPR2). اگر اولین پارامتر EXPR1 برابر با صفر نیست، تابع مقدار آن را باز می گرداند. اگر اولین پارامتر صفر باشد، تابع مقدار پارامتر دوم EXPR2 را به دست می آورد.

یک مثال عملی را در نظر بگیرید. میدان COMP در جدول EMP ممکن است حاوی مقادیر صفر باشد. هنگام انجام پرس و جو فرم:

EMPNO را انتخاب کنید، Ename، Comm، NVL (Comm، 0) NVL_COMM

از scott.emp

مقدار صفر توسط صفر جایگزین خواهد شد. لطفا توجه داشته باشید که در مورد شکل گیری ارزش با کمک عملکرد، آن را به نام مستعار اختصاص داده شده است. نتایج درخواست خواهد شد:

امپراتوری ename comm nvl_comm
7369 اسمیت 0
7499 آلن 300 300
7521 بخش 500 500
7566 جونز 0
7654 مارتین 1400 1400
7698 بیل 0
7782 کلارک 0
7839 پادشاه. 0
7844 ترنر 0 0
7900 جیمز 0
7902 آب کم عمق 0
7934 میلر 0

سقف (n)

عملکرد CEIL کوچکترین عدد صحیح، بزرگتر یا برابر تعداد N. مثلا:

CEIL (100) X1، CEIL (-100) X2، CEIL (100.2) X3، CEIL (-100.2) X4 را انتخاب کنید

از دوگانه

تابع trunc (n [، m])

تابع TRUNC تعداد علامت های n را به علائم m پس از نقطه اعشار بازگرداند. پارامتر M ممکن است نشان داده شود - در این مورد، n به طور کامل کاهش یافته است.

Trunc (100.25678) X1، Trunc (-100.25678) X2، Trunc (100.99) X3 را انتخاب کنید

Trunc (100.25678، 2) X4

از دوگانه

علامت (n) تابع

تابع نشانه تعداد اعداد را تعیین می کند. اگر N مثبت باشد، پس از آن تابع باز می شود 1. اگر منفی باز شود -1. اگر صفر صفر باشد، سپس 0 بازگردانده می شود. به عنوان مثال:

علامت را انتخاب کنید (100.22) X1، Sign (-100.22) X2، علامت (0) X3

از دوگانه

یکی از ویژگی های جالب این ویژگی امکان انتقال M برابر با صفر است - خطاهای تقسیم را به 0 نمی رساند.

عملکرد قدرت (n، m)

تابع قدرت تعداد N را به درجه m می رساند. درجه ممکن است کسری و منفی باشد، که به طور قابل توجهی قابلیت های این تابع را گسترش می دهد.

انتخاب قدرت (10، 2) x1، قدرت (100، 1/2) x2،

قدرت (1000، 1/3) x3، قدرت (1000، -1/3) x4

از دوگانه

x1 x2 x3 x4
100 10 10 0,1

در برخی موارد، هنگام فراخوانی این ویژگی، ممکن است یک استثنا رخ دهد. مثلا:

POWER را انتخاب کنید (-100، 1/2) X2

از دوگانه

در این مورد، تلاش برای محاسبه ریشه مربع از یک عدد منفی، که منجر به خطای ORA-01428 "خارج از محدوده" منجر می شود.

تابع sqrt (n)

این تابع یک ریشه مربع از n عدد را باز می کند. مثلا:

SQRT (100) X را انتخاب کنید

از دوگانه

توابع Exp (n) و ln (n)

تابع EXP به درجه N کاهش می یابد و عملکرد LN محاسبه لگاریتم طبیعی از N (با N، N، N، N باید بیشتر از صفر باشد). مثال:

SELECT EXP (2) X1، LN (1) X2، LN (EXP (2)) X3

توابع سرمایه گذاری ما کمی زودتر لمس کردیم، اکنون جزئیات بیشتری را در نظر می گیریم. ما همچنین عملکرد کار با ارزش null و توابع را در نظر می گیریم که به اجرای عملیات شاخه در درخواست کمک می کنند.

توابع توطئه

توابع توابع من از مقدار بازگشتی یک تابع به عنوان پارامتر ورودی برای یک تابع دیگر استفاده می کنم. توابع همیشه تنها یک مقدار را باز می گردانند. بنابراین، شما می توانید نتیجه عملکرد تابع را به عنوان یک مقدار حروف الفبا در هنگام استفاده از آن به عنوان یک پارامتر تماس به یک تابع دیگر در نظر بگیرید. توابع خط را می توان به هر سطح لانه سازی متصل کرد. تماس یک تابع به نظر می رسد

تابع 1 (پارامتر 1، پارامتر 2، ...) \u003d نتیجه

جایگزینی پارامتر تابع برای تماس با یک تابع دیگر می تواند منجر به ظاهر گونه شود

F1 (Param1.1، F2 (Param2.1، Param2.2، F3 (Param3.1))، param1.3)

در ابتدا، توابع تونیک قبل از نتایج آنها محاسبه می شود به عنوان مقادیر ورودی برای سایر توابع. توابع از عمیق ترین سطح لانه به سمت چپ راست محاسبه می شود. بیان قبلی به صورت زیر انجام می شود

  1. شکل F3 (Param1) محاسبه شده است و مقدار بازگشت به عنوان یک پارامتر سوم برای عملکرد 2 استفاده می شود، اجازه دهید آن را PARAM2.3 تماس بگیرید
  2. تابع F2 سپس محاسبه می شود (Param1، Param2.2، param2.3) و مقدار بازگشت به عنوان تابع F1 پارامتر دوم - Param1.2 استفاده می شود.
  3. در نهایت، تابع F1 (Param1، Param2، Param1.3) محاسبه می شود و نتیجه به برنامه تماس بازگردانده می شود.

بنابراین، عملکرد F3 در سطح لانه سوم است.

درخواست را در نظر بگیرید

select_day (last_day (sysdate) -7، 'tue') از دوگانه؛

  1. در این پرس و جو، سه عمل، از سطح پایین تر به بالا - SysDate، Last_day، Next_day. درخواست به شرح زیر انجام می شود.
  2. بیشترین عملکرد SYSDATE بیشتر انجام می شود. این سیستم سیستم فعلی را باز می گرداند. فرض کنید که تاریخ فعلی 28 اکتبر 2009
  3. نتیجه نتیجه عملکرد سطح دوم last_day است. last_date ('28 -Oxt-2009 ') آخرین روز اکتبر 2009 را باز می گرداند، یعنی ارزش 31 اکتبر 2009.
  4. سپس تفریق از این تاریخ هفت روز اتفاق می افتد - در 24 اکتبر به نظر می رسد.
  5. و در نهایت، تابع next_day ('24 -Oxt-2009 '،' tue ') محاسبه شده است، و درخواست آخرین سه شنبه اکتبر را بازمی می کند - این در مثال ما 27 اکتبر 2009.

این کاملا دشوار است درک و ایجاد عبارات پیچیده با استفاده از بسیاری از چالش های متصل از توابع، اما آن را با زمان و تمرین می آید. شما می توانید چنین عباراتی را از هم جدا کنید و به طور جداگانه تست کنید. جدول دوگانه برای آزمایش Z.aprosov و نتایج عملکرد تابع بسیار مفید است. شما می توانید اجزای کوچک را آزمایش کنید و اشکال زدایی کنید، که سپس به یک بیان بزرگ مورد نظر ترکیب می شود.

توابع شاخه

توابع شاخه، همچنین به عنوان اگر چیزی شناخته شده است - در غیر این صورت، برای تعیین مسیر پیاده سازی بسته به هر شرایطی استفاده می شود. توابع شاخه بازگشت نتایج مختلف بر اساس هیچ نتیجه ای از محاسبه شرایط. گروهی از چنین توابع توابع کار را با مقدار null اختصاص می دهند: NVL، NVL2، Nullif و COOLESCE. و همچنین ویژگی های مشترک نشان داده شده توسط عملکرد رمزگشایی و بیان مورد. عملکرد رمزگشایی یک عملکرد اوراکل است، در حالی که بیان مورد در استاندارد ANSI SQL وجود دارد.

ویژگی NVL

عملکرد NVL مقدار ستون را بررسی می کند یا هر نوع داده ای را به null بیان می کند. اگر NULL - یک مقدار پیش فرض غیر صفر جایگزین را بازبینی می کند، در غیر این صورت مقدار اولیه بازگردانده می شود.

عملکرد NVL دارای دو پارامتر مورد نیاز و نحو NVL (اصلی، iFnull) است که در آن اصل اصلی اصلی برای چک کردن است و نتیجه IFNULL به وسیله تابع بازگردانده می شود اگر مقدار اصلی صفر باشد. نوع داده های پارامترهای IFNULL و اصلی باید سازگار باشد. به عبارت دیگر، نوع داده باید یکسان باشد یا باید امکان تبدیل ضمنی مقادیر از یک نوع به دیگری باشد. تابع NVL مقدار نوع داده مشابه را به عنوان نوع داده پارامتر اصلی باز می کند. سه درخواست را در نظر بگیرید

پرس و جو 1: انتخاب NVL (1234) از دوگانه؛

پرس و جو 2: انتخاب NVL (null، 1234) از دوگانه؛

پرس و جو 3: NVL را انتخاب کنید (Substr ('ABC'، 4)، "بدون زیر شاخه") از دوگانه؛

از آنجا که توابع NVL نیاز به دو پارامتر، پرس و جو 1 خطای ORA-00909 را بازگرداند: تعداد نامعتبر استدلال. درخواست 2 به عنوان مقدار صفر بررسی می شود و NULL است. سوال سه مورد استفاده از تابع زیر زیرمجموعه که سعی می کند شخصیت چهارم را از یک رشته در سه کاراکتر انتخاب کند، مقدار صفر را باز می گرداند، و عملکرد NVL "بدون Sbustring" رشته را باز می کند.

عملکرد NVL هنگام کار با اعداد بسیار مفید است. این برای تبدیل مقادیر null به 0 تا استفاده می شود عملیات ریاضی nulls بیش از اعداد بازگشت

ویژگی NVL2

عملکرد NVL2 عملکرد بیشتری را نسبت به NVL فراهم می کند، اما همچنین برای پردازش مقدار صفر عمل می کند. این مقدار ستون یا عبارات هر نوع صفر را بررسی می کند. اگر مقدار برابر با صفر نیست، پارامتر دوم درگیر است، در غیر این صورت پارامتر سوم، بر خلاف عملکرد NVL، که در این مورد مقدار اولیه را باز می گرداند، بازگردانده می شود.

عملکرد NVL2 دارای سه پارامتر مورد نیاز و نحو NVL2 (اصلی، IFNOTNULL، IFNULL) است، جایی که اصلی یک مقدار معتبر است، مقدار iFnotnull در مورد اصلی بازگردانده می شود، اگر اصلی باشد، اگر اصل صفر باشد، اگر اصلی باشد، بازگردانده می شود. انواع داده های پارامترهای IFNOTNULL و IFNULL باید سازگار باشند و آنها نمی توانند تایپ کنند. نوع داده تابع بازگشتی NVL2 برابر با نوع داده های پارامتر ifnotnull است. چند نمونه را در نظر بگیرید

پرس و جو 1: انتخاب NVL2 (1234، 1، 'یک رشته') از دوگانه؛

پرس و جو 2: انتخاب NVL2 (NULL، 1234، 5678) از دوگانه؛

پرس و جو 3: انتخاب NVL2 (Substr ('ABC'، 2)، 'نه BC'، 'بدون Substring') از دوگانه؛

پارامتر Ifnotnull در پرس و جو 1 عدد است، و پارامتر ifnull یک رشته است. از آنجا که انواع داده ها ناسازگار هستند، خطا "ORA-01722: شماره نامعتبر" بازگشته است. Queue دو پارامتر iFnull را باز می گرداند، از آنجا که اصل NULL است و نتیجه 5678 خواهد بود. پرس و جو سه استفاده از تابع Subsstr که "BC" را باز می گرداند و NVL2 (BC "،" NOT BC "،" No Substring "را فراخوانی می کند پارامتر Ifnotnull - 'نه BC'.

تابع nullif

عملکرد NullIF دو مقدار برای هویت را بررسی می کند. اگر آنها یکسان باشند - NULL بازگردانده می شود در غیر این صورت اولین پارامتر بازگشت می شود. عملکرد NulliF دارای دو پارامتر اجباری و نحو nulf (ifunequal، comparine_item) است. این تابع دو پارامتر را مقایسه می کند و اگر آنها یکسان باشند - null بازگردانده می شود، در غیر این صورت پارامتر ifunequal. درخواست ها را در نظر بگیرید

پرس و جو 1: SELECT NULLIF (1234، 1234) از دوگانه؛

درخواست یک از زمانی که پارامترها یکسان هستند، صفر را باز می گرداند. ردیف ها در پرس و جو 2 به تاریخ تبدیل نمی شوند، اما به عنوان خطوط مقایسه می شوند. از آنجا که ردیف های طول های مختلف - پارامتر 24 ژوئیه Ifunequal 24-2009 را باز می گرداند.

شکل 10-4، عملکرد NullIF در عملکرد NVL2 سرمایه گذاری می شود. در عملکرد NullIF، به نوبه خود، زیر دست و عملکرد بالا به عنوان بخشی از بیان در پارامتر ifunequal استفاده می شود. ستون ایمیل با این عبارت مقایسه می شود که اولین حرف نام را به دست می آورد، با نام خانوادگی برای کارکنانی که دارای نام در 4 کاراکتر هستند، با نام خانوادگی متحد می شوند. هنگامی که این مقادیر برابر است، Nullif صفر را باز می کند، مقدار پارامتر ifunequal مقدار را به ارمغان می آورد. این مقادیر به عنوان یک پارامتر برای عملکرد NVL2 استفاده می شود. NVL2 به نوبه خود، توضیحات را نشان می دهد که آیا عناصر محرمانه همزمان یا نه.

شکل 10-4 - با استفاده از عملکرد NullIF

تابع coalesce

تابع COOLESCE اولین مقدار را که برابر با صفر از لیست پارامتر برابر نیست، باز می گرداند. اگر تمام پارامترها null باشند، null بازگشت می شود. تابع COOLESCE دارای دو پارامتر مورد نیاز و نحوه پارامترهای اختیاری و نحو COOLESCE (EXPR1، EXPR2، ...، EXPRN) است که در آن نتیجه EXPR1 است اگر مقدار EXPR 1H NULL باشد، در غیر این صورت نتیجه EXPR2 خواهد بود اگر آن را null نیست ، و غیره. COOLESCE به طور مساوی به معنای عملکرد NVL است

COOLESCE (EXPR1، EXPR2) \u003d NVL (EXPR1، EXPR2)

COOLESCE (EXPR1، EXPR2، EXPR3) \u003d NVL (EXPR1، NVL (EXPR2، EXPR3))

مقدار بازگشتی نوع داده اگر مقدار صفر صفر نیست، برابر با نوع داده ای از اولین مقدار صفر نیست. به منظور جلوگیری از خطا ORA-00932: انواع داده های ناسازگار، تمام پارامترهای غیر صفر باید با اولین پارامتر NOT NOT سازگار باشند. سه نمونه را در نظر بگیرید

پرس و جو 1: انتخاب COOLESCE (NULL، NULL، NULL، 'STRING') از دوگانه؛

پرس و جو 2: انتخاب COOLESCE (null، null، null) از دوگانه؛

پرس و جو 3: انتخاب COOLESCE (SUBRTR ('ABC'، 4)، 'نه BC'، 'بدون Substring') از دوگانه؛

درخواست 1 پارامتر چهارم را بازمی گرداند: رشته، به عنوان این اولین پارامتر صفر است. پرس و جو دو بازگشت NULL از آنجا که تمام پارامترها null هستند. درخواست 3 پارامتر اول را محاسبه می کند، مقدار صفر را می گیرد و پارامتر دوم را باز می کند، زیرا اولین پارامتر صفر نیست.

پارامترهای عملکرد NVL2 ممکن است اشتباه بگیرند اگر شما قبلا با عملکرد NVL آشنا هستید. NVL (اصلی، iFnull) اصلی را باز می کند اگر مقدار NULL نیست، در غیر این صورت IFNULL. NVL2 (اصلی، IFNOTNULL، IFNULL) IFNOTNULL را باز می کند اگر مقدار اصلی برابر با صفر غیر از iFnull باشد. سردرگمی ناشی از این واقعیت است که پارامتر دوم عملکرد nvl ifnull، در حالی که NVL2 IFNOTNULL است. بنابراین امید نیست که پارامتر را در عملکرد قرار دهید.

ویژگی رمزگشایی

تابع رمزگشایی اگر منطق آن را اجرا کند. بررسی دو پارامتر اول در هر برابری و بازگشت ارزش سوم در صورت برابری یا ارزش دیگری در مورد نابرابری. تابع رمزگشایی دارای سه پارامتر مورد نیاز و رمزگشایی نحو (Expr1، Comp1، iftrue1 ،،) است. این پارامترها به عنوان مثال در مثال pseudo-code زیر نشان داده شده است.

اگر expr1 \u003d comp1 پس از بازگشت iftrue1

دیگر اگر expr1 \u003d comp2 پس از بازگشت iftrue2

دیگر اگر Exprn \u003d compn سپس پس از بازگشت

دیگر بازگشت NULL | IFFALSE؛

در ابتدا EXPR1 با Comp1 مقایسه می شود. اگر آنها برابر با ارزش iftrue1 باشند. اگر EXPR1 برابر با comp1 نیست، پس چه اتفاقی می افتد، بستگی دارد که آیا پارامترهای Comp2 و iftrue2 مشخص شده اند. اگر مجموعه ها تنظیم شوند، مقدار EXPR1 با Comp2 مقایسه می شود. اگر مقادیر برابر باشد، iftrue2 بازگردانده می شود. اگر نه، اگر جفت های پارامتر Compn وجود داشته باشد، IFTruen مقایسه EXPR1 و COMPN و اگر IFTRUEN در صورت برابری بازگردانده شود. اگر هیچ تصادفی در هیچ مجموعه ای از پارامترها وجود نداشته باشد، پس اگر این پارامتر تنظیم شده یا صفر باشد، بازگردانده می شود.

تمام پارامترهای تابع رمزگشایی می تواند عبارات باشد. نوع مقدار بازگشتی برابر با نوع اول علامت چک کردن - پارامتر استcomp 1. بیان EXPR 1 به طور ضمنی به نوع داده پارامتر COMP تبدیل شده است1. سایر گزینه های COMP موجود1 ... compn همچنین به طور ضمنی به نوع COM تبدیل شده است1. رمزگشایی مقدار صفر را به عنوان برابر با ارزش دیگر صفر قرار می دهد، I.E. اگر EXPR1 NULL باشد و COMP3 NULL است و Comp2 NULL نیست، سپس مقدار iftrue3 بازگردانده می شود. چند نمونه را در نظر بگیرید

پرس و جو 1: انتخاب رمزگشایی (1234، 123، 123 "یک مسابقه") از دوگانه؛

پرس و جو 2: انتخاب رمزگشایی (1234، 123، 123 "،" بدون مسابقه ") از دوگانه؛

پرس و جو 3: انتخاب رمزگشایی ("جستجو"، 'comp1'، 'true1'، 'comp2'، 'true2'، 'جستجو'، 'true3'، substr ('2Search'، 2، 6)، 'true4'، ' اشتباه ') از دوگانه؛

درخواست یک مقدار 1234 و 123 را مقایسه می کند. از آنجایی که آنها برابر نیستند، Iftrue1 نادیده گرفته می شود و از آنجایی که اگر NULL بازگردانده شود تعریف نشده است. پرس و جو با پرس و جو 1 یکسان است، به استثنای مقدار IFFALSE تعریف شده است. از سال 1234 برابر با 123 نیست، Iffalse بازگشت - "بدون مسابقه". پرس و جو سه چک پارامتر را در مطابقت با ارزش جستجو بررسی می کند. پارامترهای Comp1 و Comp2 برابر با "جستجو" نیستند، بنابراین نتایج iftrue1 و iftrue2 از بین می روند. این تصادف در مقایسه مقایسه سوم عنصر Comp3 (موقعیت پارامتر 6) و مقدار iftrue3 یافت می شود (پارامتر 7) بازگشتی است که "TRUE3" است. از آنجا که تصادف بیشتر محاسبات یافت نشد. به این معنا است که علیرغم این واقعیت که مقدار Comp4 (پارامتر 8) نیز با EXPR1 همخوانی دارد - این بیان هرگز محاسبه نمی شود، زیرا تصادف در مقایسه قبلی یافت نشد.

بیان حروف

تمام زبان های برنامه نویسی سوم و چهارم، طراحی مورد را اجرا می کنند. مانند تابع رمزگشایی، بیان مورد به شما اجازه می دهد تا منطق را اجرا کنید. دو گزینه برای استفاده از عبارت موجود در دسترس هستند. بیانگر ساده ساده عنصر منبع را برای مقایسه یک بار تنظیم می کند و سپس تمام شرایط تأیید لازم را لیست می کند. پرونده پیچیده (جستجو شده) هر دو اپراتور را برای هر شرایط محاسبه می کند.

بیان موردی دارای سه پارامتر اجباری است. نحو بیان بستگی به نوع دارد. برای یک مورد ساده از بیان، او به نظر می رسد

مورد search_expr

هنگامی که مقایسه_expr1 سپس iftrue1

}