При составлении sql-запросов нередко возникает מצב שבו, בעת אחזור נתונים, יש צורך להשוות את הערכים של מספר עמודות פלט פלט המכיל את הנתונים (לא ריק). בעיה זו נפתרת באופן מושלם על ידי הביטוי Coalesce. במאמר זה, תוכלו למצוא תיאור מלא של הביטוי SQL Coalsce, תיאור של תכונות השימוש, ודוגמאות.
הצגת ערכים לא ריקים עם Coalesce. מוזרויות
שקול את תכונות השימוש ב-Sql Coalesce:
- מאפשר כל מספר של ארגומנטים (בניגוד ל-Isnull/Nvl/Nvl2, שיש להם מספר מוגבל של ארגומנטים).
- יכול לקבל שאילתות משנה כארגומנטים.
- מחזירה תוצאה שווה ל ראשון ערך non-Null, או Null אם לא נמצא ערך שאינו Null.
- ניתן להשתמש ב-Sql Coalesce בסעיף Select כדי לבחור ערך לא ריק, וגם ב-Where לציין שאסור לקבוצה של עמודות עם ערכים ריקים (/מותר).
- ביטוי זה שווה ערך לשימוש בביטוימקרה שבודק כל ארגומנט ברצף עבור התנאי כאשר argument1 אינו null אז argument1. בעיקרו של דבר, Coalesce הוא "קיצור דרך" שנוצר על מנת להקל על השימוש, ובהרבה ממטבי שאילתות DBMS כותבים מחדש את הביטוי Coalesce עם Case.
- פונקציות SQL Coalesce זמינות בכל המערכות המובילות לניהול מסדי נתונים יחסיים.
תחביר
כל מי שאי פעם השתמש ב-Coalesce inהידור שאילתות sql, יודע שהתחביר של ביטוי זה פשוט ביותר. מספיק לציין את הארגומנטים שיש לבדוק עבור Null מופרדים בפסיקים בסוגריים. אם נניח שהארגומנטים נקראים arg1, arg2, ... argN, אז התחביר של Coalesce יהיה כדלקמן:
Coalesce(arg1, arg2, ... argN).
הבה נכין מספר טבלאות כדי ללמוד את המנגנון של ביטוי זה.
הכנת שולחן
כדי להבין טוב יותר את תיאור ה-Coalesce sql, בואו ניצור שתי טבלאות במסד הנתונים המכילות מידע על אובייקטי נדל"ן.
תן לטבלה הראשונה שטח להכיל את שמות חפצי הנדל"ן והשטח שלהם. ניתן לציין את השטח (area_yt) או להכריז (area_decl).
תְעוּדַת זֶהוּת | שם_אובייקט | area_yt | area_decl |
1 | בניין 1 | 116,2 | 114 |
2 | בנייה בעיצומה 1 | 568 | |
3 | חדר 1 | 64,7 | |
4 | חדר 2 | 34,2 | |
5 | חלקת קרקע 1 | 112 | 111,6 |
6 | בניין 1 | ||
7 | חדר 3 | 27,9 | |
8 | בניין 2 | 37,2 | 36,4 |
9 | בניין 2 |
תן לטבלה השנייה Basic_characteristicמכיל מידע על המאפיין העיקרי של הנכס - אורך (Extension), עומק (Depth), שטח (Area), נפח (Scope), גובה (Height).
תְעוּדַת זֶהוּת | שם_אובייקט | סיומת | עוֹמֶק | אֵזוֹר | תְחוּם | גוֹבַה |
1 | בניין 1 | 892,4 | 30 | |||
2 | בניין 2 | 48 | ||||
3 | בניין 1 | 164,7 | ||||
4 | חלקת קרקע 1 | |||||
5 | חדר 1 | 23,6 | ||||
6 | חדר 2 | 34,7 | ||||
7 | חדר 3 | 19,8 |
בדקנו את התחביר של Coalesce sql, תיאור, תכונות שימוש והלכנו ישירות לדוגמאות.
דוגמאות לשימוש
התחביר של הביטוי Coalesce הוא פשוט ביותר,עם זאת, חשוב לזכור שתוצאת הפקודה תהיה הערך הראשון שאינו ריק שנמצא מרשימת הארגומנטים. הערה זו חשובה מאוד, ולכן יש לסדר את הטיעונים בביטוי לפי סדר חשיבותם. הדרך הקלה ביותר להבין את העיקרון היא מטבלת השטח. בצע שאילתה שבוחרת את שם הנכס, כמו גם את ערך האזור:
בחר Area.id, Area.object_name, coalesce(Area.area_yt, Area.area_decl) מאזור |
וקבלו את התוצאה:
תְעוּדַת זֶהוּת | שם_אובייקט | לְהִתְמַזֵג |
1 | בניין 1 | 116,2 |
2 | בנייה בעיצומה 1 | 568 |
3 | חדר 1 | 64,7 |
4 | חדר 2 | 34,2 |
5 | חלקת קרקע 1 | 112 |
6 | בניין 1 | |
7 | חדר 3 | 27,9 |
8 | בניין 2 | 37,2 |
9 | בניין 2 |
לחפצים "בניין 1", "מגרש 1" ו"קונסטרוקציה 2" שני ערכי השטח מולאו, אך השטח שצוין התברר כעדיפות, מכיוון שציינו אותו קודם ברשימת הטיעונים. הביטוי Coalesce מצא את הערך הראשון שאינו אפס והוציא אותו, תוך שהוא מפסיק להסתכל על טיעונים נוספים. בנייה זו של השאילתה נכונה, מכיוון שהאזור שצוין הוא ספציפי יותר מהאזור המוצהר. אם היינו מציינים את השטח המוצהר כארגומנט הראשון, אז אם השדה הזה של הטבלה היה מלא, הוא היה בעדיפות.
בנוסף לשימוש ב-Select, לעתים קרובות מאודהביטוי Coalesce מיושם עם פסקת Where. זה מאפשר לך לנתק מהתוצאה את השורות שבהן הערכים של רשימת השדות ריקים (או להיפך, לכלול בתוצאה רק את הערכים שבהם רשימת השדות ריקה). מצב זה מתרחש בכל מקום: למשל, במפעל, בעת רישום עובד חדש, הוכנסו למאגר המידע רק מידע בסיסי אודותיו ומילוי מידע מפורט הושאר "לאחר מכן". בהדרגה נוצרים "פערים" - אם לפני הצ'ק, או בעת שליחת עובד לחופשה / נסיעת עסקים / חופשת מחלה.
בואו נבחר חפצי נדל"ן מהטבלה עם המאפיינים העיקריים, שעבורם אף אחד מהערכים האופייניים אינו מלא:
SELECT id, object_name FROM Basic_characteristic כאשר ההתלכדות (הרחבה, עומק, שטח, היקף, גובה) ריק |
עבור שאילתה זו, יש התאמה אחת בטבלה - האובייקט "ארץ 1", שבו כל השדות עם מאפיינים ריקים:
תְעוּדַת זֶהוּת | שם_אובייקט |
4 | חלקת קרקע 1 |
אנו מקווים שתיאור ה-Coalesce sql המפורט שלנו עזר לך להבין את כל התכונות של השימוש בביטוי זה, כמו גם להתמודד עם ניואנסים חשובים.