sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo reemplazar valores nulos con desconocidos en la instrucción Select en SQL Server - Tutorial de SQL Server/TSQL, parte 111

Escenario:


Está trabajando como desarrollador de SQL Server, debe consultar la tabla dbo.Customer y reemplazar los valores nulos en la columna Nombre por "Nombre desconocido". ¿Qué funciones SQL usará para reemplazar el valor nulo con "Nombre desconocido"?


Solución:

Puede usar las funciones ISNULL o COALESCE para reemplazar Null con el valor que nos gusta. Vamos a crear la tabla dbo.Customer e insertar registros de muestra usando las declaraciones a continuación.

--Create dbo.Customer table
Create table dbo.Customer(
Id int,
Name VARCHAR(10),
Address VARCHAR(100))

--Insert records in dbo.Customer table
Insert into dbo.Customer
Values(1,'Aamir','XyZ Address')
,(2,'Raza',Null)
,(3,null,'abc address')
 
 
 
 Usemos las funciones ISNULL o COALESCE para reemplazar Null con "Nombre desconocido".
Select Id,ISNULL(Name,'Unknown Name') AS NameByISNull,
COALESCE(Name,'Unknown Name') NamebyCoalesce,
Address From dbo.Customer
 
 
Cómo reemplazar valores nulos con valores en SQL Server - Tutorial de TSQL


 Como puede ver, usamos ISNULL y reemplazamos Null con "Nombre desconocido", pero devolvió "Na desconocido", no devolvió "Nombre desconocido" completo. La razón, el tipo de datos de una expresión ISNULL es el tipo de datos de la primera entrada (columna Nombre) que es varchar(10), eso significa que siempre nos devolverá 10 caracteres.
Si tiene situaciones como esta, es mejor que use COALESCE. El tipo de datos de una expresión COALESCE es el tipo de datos del argumento de entrada con la precedencia de tipo de datos más alta. En nuestro caso, "Nombre desconocido" tiene 12 caracteres y optó por usarlo en lugar del tipo de datos de la columna Nombre, que es varchar(10).