logo

פונקציית ISNULL של SQL Server

זוהי פונקציה מובנית ב-SQL Server. זה מאפשר למשתמש להחליף את ערכי NULL עם ערך חלופי נתון. מאמר זה נותן סקירה מלאה של הפונקציה ISNULL להחזרת ערך חלופי אם לרשומות הביטוי או הטבלה יש ערכי NULL.

תחביר

להלן תחביר הממחיש את הפונקציה ISNULL:

 ISNULL ( Expression, Replacement ) 

כפי שאנו יכולים לראות שהתחביר הזה מקבל רק שני טיעונים:

חיפוש בינארי
    ביטוי: הוא משמש לבדיקת NULL. זה יכול להיות מכל סוג שהוא.תַחֲלִיף: זה הערך שיוחזר כאשר הביטוי הוא NULL. עליה להיות ניתנת להמרה באופן מרומז לערך מסוג הביטוי.

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

הפונקציה ISNULL יכולה לעבוד ב-SQL Server (החל מ-2008), Parallel Data Warehouse, Azure SQL Database ו-Azure SQL Data Warehouse.

דוגמה לפונקציה ISNULL

תן לנו לחקור את הפונקציה ISNULL עם כמה דוגמאות ב-SQL Server.

1. פונקציית ISNULL עם הערך המספרי

הדוגמה שלהלן משתמשת בפונקציה ISNULL. כאן הטיעון הראשון הוא NULL; לכן, הוא מחזיר את הערך של ארגומנט שני בתוצאה:

 SELECT ISNULL(NULL, 25) AS Result; 

לאחר הביצוע, נקבל את הפלט שלהלן:

פונקציית ISNULL של SQL Server

2. פונקציית ISNULL עם נתוני מחרוזת תווים

הדוגמה שלהלן משתמשת בפונקציה ISNULL. כאן נקבל את ערך המחרוזת 'שלום' כי זה הטיעון הראשון. החל מהגדרת הפונקציה ISNULL() הוא מחזיר את ערך הארגומנט הראשון כאשר הוא NOT NULL:

מגף קפיץ
 SELECT ISNULL('Hello', 'Javatpoint') AS Result; 

לאחר הביצוע, נקבל את הפלט שלהלן:

פונקציית ISNULL של SQL Server

3. פונקציית ISNULL עם משתנים

הדוגמה שלהלן משתמשת בפונקציה ISNULL ומחזירה את התוצאה באמצעות משתנה:

 DECLARE @expres VARCHAR(45); DECLARE @value VARCHAR(25); SET @expres = NULL; SET @value = 'Javatpoint'; SELECT ISNULL(@expres, @value) AS Result; 

לאחר הביצוע, נקבל את הפלט שלהלן:

פונקציית ISNULL של SQL Server

4. פונקציית ISNULL על הטבלה

כאן אנו הולכים לראות כיצד נוכל להחליף ערך עמודה בערך בעל משמעות כאשר הוא מכיל ערכי null. תחילה ניצור טבלה בשם ' עוֹבֵד' באמצעות ההצהרה שלהלן:

 CREATE TABLE Employee (ID INT IDENTITY PRIMARY KEY, Emp_Name VARCHAR(50) NOT NULL, Age INT NULL, Salary INT NULL ); 

כעת, נכניס כמה ערכים לטבלה זו באמצעות המשפט שלהלן:

 INSERT INTO Employee (Emp_Name, Age, Salary) VALUES ('Kevin Huges', 28, 45000), ('Rose Bennet', NULL, 36000), ('Peter Butler', 25, NULL); 

כאשר אנו מאמתים את הטבלה, אנו יכולים לראות זאת לעובדים 2 ו-3 יש NULL ערך.

פונקציית ISNULL של SQL Server

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

לדוגמה , אנחנו רוצים להחזיר את גיל ו שכר של העובד עם 22 ו-25000, בהתאמה, אם העמודות שלהם מכילות ערכי NULL בטבלת העובד. אנו יכולים לעשות זאת באמצעות ההצהרה הבאה:

nfa ל-dfa
 SELECT ID, Emp_Name, ISNULL(Age, 22) AS Age, ISNULL(Salary, 25000) AS Salary FROM Employee; 

לאחר הביצוע, נקבל את הפלט שלהלן:

פונקציית ISNULL של SQL Server

אם נריץ את השאילתה עם הפונקציה ISNULL עבור העמודה שבה לאף עמודה אין ערכי NULL בטבלה, שאילתה זו תחזיר את הערכים האמיתיים של השורות.

לדוגמה , עדכנו את ה שכר של העובד שלו ID=2 כדלהלן:

 UPDATE Employee SET Salary = 65000 WHERE ID=2; 

שוב, אם נבצע את הפונקציה ISNULL, זה לא משנה את עמודת השכר. ראה את הפלט שלהלן:

פונקציית ISNULL של SQL Server

5. ISNULL עם פונקציות מצטברות

SQL Server גם מאפשר לנו להשתמש בפונקציות המצטברות כגון SUM, AVG עם הפונקציה ISNULL. נניח שאולי נצטרך להשיג את סכום משכורת עמודה הקיימת בטבלת העובדים, ואם עמודת שכר כלשהי מכילה NULL, היא תוחלף ב-25000 לפני הוספת המשכורות.

לפני ביצוע השיטות המצטברות, נעדכן את שכר העובד ב-NULL שהמזהה שלו הוא 2, באמצעות השאילתה למטה.

 UPDATE Employee SET Salary = NULL WHERE ID=2; 

הדוגמה להלן מחליפה תחילה את הערך NULL ב-25000 ולאחר מכן ביצעה בו את הפונקציה SUM. ראה את הפלט שלהלן:

 SELECT SUM(ISNULL(Salary, 25000)) AS Sum_of_Salaries FROM Employee; 

לאחר הביצוע, נקבל את הפלט שלהלן:

פונקציית ISNULL של SQL Server

באופן דומה, ניתן להשתמש בפונקציה ISNULL כדי להחליף ערכי NULL ולאחר מכן להחזיר את הערך הממוצע עם הפונקציה AVG() . ראה את ההצהרה שלהלן:

 SELECT AVG(ISNULL(Salary, 25000)) AS Avg_of_Salaries FROM Employee; 

לאחר הביצוע, נקבל את הפלט שלהלן:

פונקציית ISNULL של SQL Server

ההבדל בין SQL Server ISNULL עם IS NULL

הפונקציות ISNULL ו-IS NULL שונות ב-SQL Server. אנו משתמשים בפונקציה ISNULL כאשר יש לנו צורך בכך להחליף את ערכי NULL עם ערך מוגדר. מצד שני, אנחנו משתמשים בפונקציה IS NULL כשאנחנו רוצים לזהות ערכי NULL בטבלה.

הבה נראה את הדוגמה שלהלן כדי להמחיש את ההבדלים ביניהם .

נניח שאנו רוצים לקבל את נתוני העובדים מה-' עוֹבֵד' טבלה המכילה ערכי NULL בעמודה שכר. כדי לקבל מידע מסוג זה, עלינו להשתמש בפונקציה IS NULL ב- איפה סעיף כדלקמן:

 SELECT * FROM Employee WHERE Salary IS NULL; 

זה יחזיר את פרטי העובד ששכרו NULL:

סנכרון חוט
פונקציית ISNULL של SQL Server

כעת, אם ננסה להשיג מידע מסוג זה עם פונקציית ISNULL, SQL Server דרך הפעולות הבאות שְׁגִיאָה :

 SELECT * FROM Employee WHERE Salary ISNULL(NULL, 0; 

הנה השגיאה:

פונקציית ISNULL של SQL Server

לפיכך, ברור ש-SQL Server אינו מאפשר לנו להשתמש ב-ISNULL כדי למצוא ערכי NULL.