במדריך זה, השלישי והאחרון בסדרה נכיר שני סוגים נוספים של פונקציות –  פונקציות תנאי ועל הערך NULL.

פוסט זה מתמקד בפונקציות השורה בסביבת Oracle, לרשימה חלקית של פונקציות שורה בסביבת SQL Server ניתן להשתמש בפוסט הבא

פונקציות על הערך NULL

 

שם הפונקציה

תפקיד הפונקציה

דוגמא

NVL

ממירה ערך NULL לערך ממשי

NVL (NULL , ‘Hello’) à ‘Hello’

NVL2

מקבלת 3 ארגומנטים

1. ערך ראשון – ערך רגיל

2. ערך שני – ערך להצגה במידה והערך לא NULL

3. ערך שלישי – ערך להצגה   במידה והערך NULL

NVL2(‘Real Value’ , ‘Not Null’, ‘Null !’)

à Not Null

 

NVL2(Null, ‘Not Null’, ‘Null !’)

à Null !

 

NULLIF

מקבלת 2 ערכים

v     אם הערכים שווים היא מחזירה NULL

v     אם הערכים שונים היא מחזירה את הערך הראשון

NULLIF(‘Hello’ , ‘Hello’) à NULL

NULLIF(‘Hello’ , ‘World’) à hello

COALESCE

מקבלת רשימת ערכים, מחזירה את הראשון מבינהם שאינו NULL

COALESCE(NULL , ‘Hello’, ‘World’)

à Hello

 

פונקציות תנאי

מאפשרות לנו להחזיר תוצאות ספציפיות לכל שדה ושדה לפי ערכו.

 

פונקציית CASE

CASE   WHENא  תנאי THEN 'תוצאה א'

       WHENב   תנאיTHEN 'תוצאה ב'

       WHENג  תנאי THEN 'תוצאה ג'

       ELSE 'תוצאה ד'   

END

 

בדוגמא זו אנו מציגים את שם משפחתו של העובד, משכורתו ועמודה חדשה – מבוססת על CASE אשר מציגה את דירוג העובד לפי משכורתו.

SELECT last_name , salary , 

       CASE WHEN salary BETWEEN 0     AND 5000  THEN ‘Grade_A’

            WHEN salary BETWEEN 5001  AND 10000THEN ‘Grade_B’

            WHEN salary BETWEEN 10001 AND 17000 THEN ‘Grade_C’

            ELSE ‘Grade ‘D’     

       END AS “SALARY_GRADES”

FROM employees 

 

v     כל משפט CASE מוגדר כעמודה בפני עצמה.

v     התנאי לאחר משפט WHEN יכול להיות כל תנאי שניתן לכתוב לאחר משפט WHERE.

v     ניתן לחזור על חלק THEN WHEN לפי הצורך.

v     חלק  ELSE הוא רשות.

v     חלק END הוא חובה.

v     לא חובה להגדיר כינוי לכל עמודת  CASE לאחר END אך מאוד רצוי.

 

פונקציית DECODE

DECODE(עמודה   , ערך 1 ,   תוצאה 1

               , ערך 2  , תוצאה 2

               , ערך 3  , תוצאה 3

               , ערך דיפולטיבי)

 

בדוגמא זו אנו מציגים את שם משפחתו של העובד, מספר מחלקתו, ועמודה חדשה – מבוססת על DECODE אשר מציגה ערכים שונים בהתאם למספר מחלקתו של העובד:

SELECT last_name , department_id ,

       DECODE(department_id   , 80  , 'DEP_80'

                             , 90  , 'DEP_90'

                             , 110 , 'DEP_110'

                           , 'Some Other DEP') AS "DEP"

FROM employees

v     כל משפט DECODE מוגדר כעמודה בפני עצמה.

v     הערכים שנכתבים בתוך DECODE חייבים להיות מושווים לעמודה.

v     ניתן לכתוב את חלק ה'ערך-תוצאה' לפי הצורך.

v     הערך הדיפולטיבי הוא רשות.

v     לא חובה להגדיר כינוי לכל עמודת DECODE, אך מאוד רצוי לעשות כן.

 

לפוסט הקודם בנושא – פונקציות המרה