logo

وظيفة SQL Server ISNULL

إنها وظيفة مضمنة في SQL Server. أنها تتيح للمستخدم استبدل القيم الخالية مع قيمة استبدال معينة. توفر هذه المقالة نظرة عامة كاملة حول الدالة 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. هنا الوسيطة الأولى فارغة؛ ولذلك، فإنه يُرجع قيمة الوسيطة الثانية في النتيجة:

 SELECT ISNULL(NULL, 25) AS Result; 

بعد التنفيذ سنحصل على المخرجات التالية:

وظيفة SQL Server ISNULL

2. وظيفة ISNULL مع بيانات سلسلة الأحرف

يستخدم المثال أدناه الدالة ISNULL. هنا سوف نحصل على قيمة السلسلة 'مرحبًا' لأنها الحجة الأولى. وفقًا لتعريف الدالة ISNULL()، فإنها تُرجع قيمة الوسيطة الأولى عندما لا تكون فارغة:

تخطي القائمة
 SELECT ISNULL('Hello', 'Javatpoint') AS Result; 

بعد التنفيذ سنحصل على المخرجات التالية:

وظيفة SQL Server ISNULL

3. دالة ISNULL مع المتغيرات

يستخدم المثال التالي الدالة ISNULL ويعيد النتيجة باستخدام متغير:

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

بعد التنفيذ سنحصل على المخرجات التالية:

وظيفة SQL Server ISNULL

4. وظيفة ISNULL على الطاولة

سنرى هنا كيف يمكننا استبدال قيمة العمود بقيمة ذات معنى عندما تحتوي على قيم فارغة. لنقم أولاً بإنشاء جدول باسم '' موظف' باستخدام العبارة أدناه:

ما هي الأشهر q1
 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 قيمة.

وظيفة SQL Server ISNULL

لنفترض أننا نريد استبدال القيم الخالية لهذه الأعمدة دون تحديثها بشكل دائم في الجدول. في هذه الحالة، يمكننا استخدام الدالة ISNULL لاستبدال القيم NULL بالقيمة المحددة.

على سبيل المثال ، نريد إرجاع عمر و مرتب للموظف بـ 22 و25000، على التوالي، إذا كانت أعمدتها تحتوي على قيم NULL في جدول الموظف. يمكننا القيام بذلك باستخدام العبارة التالية:

 SELECT ID, Emp_Name, ISNULL(Age, 22) AS Age, ISNULL(Salary, 25000) AS Salary FROM Employee; 

بعد التنفيذ سنحصل على المخرجات التالية:

وظيفة SQL Server ISNULL

إذا قمنا بتشغيل الاستعلام باستخدام الدالة ISNULL للعمود الذي لا يحتوي أي عمود على قيم NULL في الجدول، فسيقوم هذا الاستعلام بإرجاع القيم الفعلية للصفوف.

على سبيل المثال ، لقد قمنا بتحديث مرتب للموظف الذي المعرف=2 على النحو التالي:

 UPDATE Employee SET Salary = 65000 WHERE ID=2; 

مرة أخرى، إذا قمنا بتنفيذ الدالة ISNULL، فإنها لا تغير عمود الراتب. انظر الإخراج أدناه:

وظيفة SQL Server ISNULL

5. ISNULL مع الوظائف المجمعة

يتيح لنا SQL Server أيضًا استخدام الوظائف المجمعة مثل SUM وAVG مع وظيفة ISNULL. لنفترض أننا قد نحتاج للحصول على مبلغ من الراتب العمود الموجود في جدول الموظفين، وإذا كان أي عمود راتب يحتوي على NULL، فسيتم استبداله بـ 25000 قبل إضافة الرواتب.

قبل تنفيذ الطرق المجمعة، سنقوم بتحديث راتب الموظف بـ NULL ومعرفه 2، باستخدام الاستعلام أدناه.

 UPDATE Employee SET Salary = NULL WHERE ID=2; 

يستبدل المثال أدناه أولاً القيمة NULL بـ 25000 ثم يقوم بتنفيذ الدالة SUM عليها. انظر الإخراج أدناه:

سلسلة Js متعددة الأسطر
 SELECT SUM(ISNULL(Salary, 25000)) AS Sum_of_Salaries FROM Employee; 

بعد التنفيذ سنحصل على المخرجات التالية:

وظيفة SQL Server ISNULL

وبالمثل، يمكن استخدام الدالة ISNULL لاستبدال القيم NULL ثم إرجاع القيمة المتوسطة باستخدام وظيفة متوسط ​​(). . انظر البيان أدناه:

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

بعد التنفيذ سنحصل على المخرجات التالية:

وظيفة SQL Server ISNULL

الفرق بين SQL Server ISNULL و IS NULL

تختلف الدالتان ISNULL وIS NULL في SQL Server. نستخدم الدالة ISNULL عندما نحتاج إلى ذلك استبدل القيم الخالية بقيمة محددة. من ناحية أخرى، نستخدم الدالة IS NULL عندما نريد ذلك تحديد القيم الخالية في طاولة.

دعونا نرى المثال أدناه لتوضيح الاختلافات بينهما .

منتج نقطة numpy

لنفترض أننا نريد الحصول على بيانات الموظف من ' موظف' الجدول الذي يحتوي على قيم NULL في عمود الراتب. للحصول على هذا النوع من المعلومات، يجب علينا استخدام الدالة IS NULL في ملف أين الجملة على النحو التالي:

 SELECT * FROM Employee WHERE Salary IS NULL; 

سيُرجع تفاصيل الموظف الذي يكون راتبه NULL:

وظيفة SQL Server ISNULL

الآن، إذا حاولنا الحصول على هذا النوع من المعلومات باستخدام وظيفة ISNULL، SQL Server من خلال ما يلي خطأ :

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

وهنا الخطأ:

وظيفة SQL Server ISNULL

وبالتالي، فمن الواضح أن SQL Server لا يسمح لنا باستخدام ISNULL للعثور على القيم الخالية.