Concatenar campos nulos en una consulta SQL


Hay ocasiones en las que puede que se nos pidan consultas del siguiente tipo:

SELECT Nombre + ' ' + Apellido1 + ' ' + Apellido2 AS NombreCompleto FROM Usuario

Es decir: concatenar varios campos y devolverlo como uno solo. Ante esto existe un problema bastante común: ¿Qué ocurre cuando uno de estos campos es NULL?
Si uno de estos campos es NULL, por defecto el registro devolverá NULL. Esto es, si tenemos un usuario llamado Santiago, cuyo primer apellido es López y su segundo apellido no consta en la base de datos, el resultado de concatenar Santiago + López + NULL será NULL.

Una posible solución a este problema es utilizar condicionales dentro de la propia sentencia T-SQL, haciendo algo así:

SELECT U.IdUsuario, U.Nombre + ' ' + CASE 
     WHEN U.Apellido1 is NULL THEN '' 
     ELSE U.Apellido1 END + ' ' + CASE 
     WHEN U.Apellido2 is NULL THEN ' ' 
     ELSE U.Apellido2 END AS NombreCompleto
FROM Usuario U

Esto nos devolverá una columna “NombreCompleto” con los campos concatenados correctamente, sin temor a que éstos sean NULL.

Anuncios

12 comments

  1. gracias tambn se puede utilizar isnull asi:
    select isnull( ‘ ‘+campo1,”)+isnull(‘ ‘+campo2,”) from tabla
    si el campo es null toma el valor de la derecha de la coma, si no es null toma ”+campo1.

  2. como puedo solucionar esta unión o concatenar ..

    cod_prov cod_dist cod_dept cod_ubi
    ——– ——– ——– ——-
    01 01 01 null
    02 01 01 null

    juntar estos 3 campos = que me salga así

    cod_prov cod_dist cod_dept cod_ubi
    ——– ——– ——– ——-
    01 01 01 010101
    02 01 01 020101

  3. Buen día, tengo una consulta con 3 campos y el resultado es cero registros quiero sustituir en la primer columna la leyenda ‘Sin registros’.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s