logo

Funció SQL Server ISNULL

És una funció integrada a SQL Server. Permet a l'usuari substituïu els valors NULL amb un valor de substitució determinat. Aquest article ofereix una visió general completa de la funció ISNULL per retornar un valor alternatiu si l'expressió o els registres de la taula tenen valors NULL.

anotacions d'arrencada de primavera

Sintaxi

La següent és una sintaxi que il·lustra la funció ISNULL:

 ISNULL ( Expression, Replacement ) 

Com podem veure que aquesta sintaxi només accepta dos arguments:

    Expressió: S'utilitza per comprovar si NULL. Pot ser de qualsevol tipus.Substitució: És el valor que es retornarà quan l'expressió sigui NULL. Ha de ser implícitament convertible a un valor del tipus d'expressió.

Si l'expressió s'avalua com a NULL, aquesta funció substitueix el valor NULL pel valor de substitució. Quan l'argument els tipus de dades són diferents , el servidor SQL transforma implícitament el tipus de dades del valor de substitució al tipus de dades d'expressió abans de retornar un valor. Obtenim el valor de l'expressió quan l'expressió no sigui NULL.

La funció ISNULL pot funcionar a SQL Server (a partir del 2008), Parallel Data Warehouse, Azure SQL Database i Azure SQL Data Warehouse.

Exemple de funció ISNULL

Explorem la funció ISNULL amb alguns exemples a SQL Server.

1. Funció ISNULL amb el valor numèric

L'exemple següent utilitza la funció ISNULL. Aquí el primer argument és NULL; per tant, retorna el valor d'un segon argument en un resultat:

 SELECT ISNULL(NULL, 25) AS Result; 

Després de l'execució, obtindrem la següent sortida:

Funció SQL Server ISNULL

2. Funció ISNULL amb dades de cadena de caràcters

L'exemple següent utilitza la funció ISNULL. Aquí obtindrem el valor de la cadena 'Hola' perquè és el primer argument. A partir de la definició de la funció ISNULL(), retorna el valor del primer argument quan NO és NULL:

base de dades
 SELECT ISNULL('Hello', 'Javatpoint') AS Result; 

Després de l'execució, obtindrem la següent sortida:

Funció SQL Server ISNULL

3. Funció ISNULL amb variables

L'exemple següent utilitza la funció ISNULL i retorna el resultat mitjançant una variable:

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

Després de l'execució, obtindrem la següent sortida:

Funció SQL Server ISNULL

4. Funció ISNULL a la taula

Aquí veurem com podem substituir un valor de columna per un valor significatiu quan conté valors nuls. Creem primer una taula anomenada ' Empleat' utilitzant la declaració següent:

Formateador de dates senzill en java
 CREATE TABLE Employee (ID INT IDENTITY PRIMARY KEY, Emp_Name VARCHAR(50) NOT NULL, Age INT NULL, Salary INT NULL ); 

Ara inserirem alguns valors en aquesta taula utilitzant la següent instrucció:

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

Quan comprovem la taula, ho podem veure els empleats 2 i 3 tenen un NULL valor.

Funció SQL Server ISNULL

Suposem que volem substituir els valors NULL d'aquestes columnes sense actualitzar-los permanentment a la taula. En aquest cas, podem utilitzar la funció ISNULL per substituir els valors NULL pel valor específic.

Per exemple , volem tornar el edat i sou de l'empleat amb 22 i 25000, respectivament, si les seves columnes tenen valors NULL a la taula Employee. Ho podem fer utilitzant la següent declaració:

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

Després de l'execució, obtindrem la següent sortida:

Funció SQL Server ISNULL

Si executem la consulta amb la funció ISNULL per a la columna on cap columna té valors NULL a la taula, aquesta consulta retornarà els valors reals de les files.

Per exemple , hem actualitzat el sou de l'empleat del qual ID=2 com segueix:

 UPDATE Employee SET Salary = 65000 WHERE ID=2; 

De nou, si executem la funció ISNULL, no canvia la columna salari. Vegeu la sortida següent:

matriu afegint elements java
Funció SQL Server ISNULL

5. ISNULL amb funcions agregades

SQL Server també ens permet utilitzar les funcions agregades com SUM, AVG amb la funció ISNULL. Suposem que potser necessitem obtenir el suma d'un salari columna present a la taula Empleat, i si alguna columna de salari té NULL, se substituirà per 25000 abans d'afegir els sous.

Abans de realitzar els mètodes agregats, actualitzarem el salari dels empleats amb NULL l'identificador del qual és 2, mitjançant la consulta següent.

 UPDATE Employee SET Salary = NULL WHERE ID=2; 

L'exemple següent substitueix primer el valor NULL per 25000 i després s'hi realitza la funció SUMA. Vegeu la sortida següent:

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

Després de l'execució, obtindrem la següent sortida:

Funció SQL Server ISNULL

De la mateixa manera, la funció ISNULL es pot utilitzar per substituir valors NULL i després retornar el valor mitjà amb Funció AVG(). . Vegeu la declaració següent:

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

Després de l'execució, obtindrem la següent sortida:

Funció SQL Server ISNULL

Diferència entre SQL Server ISNULL i IS NULL

Les funcions ISNULL i IS NULL són diferents a SQL Server. Utilitzem la funció ISNULL quan ho necessitem substituïu els valors NULL amb un valor especificat. D'altra banda, utilitzem la funció IS NULL quan volem identificar valors NULL en una taula.

Vegem l'exemple següent per il·lustrar les seves diferències .

Suposem que volem obtenir les dades dels empleats del ' Empleat' taula que conté valors NULL a la columna Salari. Per obtenir aquest tipus d'informació, hauríem d'utilitzar la funció IS NULL al fitxer ON clàusula de la següent manera:

 SELECT * FROM Employee WHERE Salary IS NULL; 

Tornarà el detall de l'empleat el salari del qual és NULL:

Funció SQL Server ISNULL

Ara, si intentem obtenir aquest tipus d'informació amb la funció ISNULL, SQL Server a través del següent error :

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

Aquí està l'error:

Funció SQL Server ISNULL

Per tant, està clar que SQL Server no ens permet utilitzar l'ISNULL per trobar valors NULL.