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.
devtyj
Excelente …Buen ejemplo 😀
Gracias!!, me funcionó a la Perfección.
Buena men me salvaste con este articulo, gracias…
EXCELENTE, FUNCIONO BIEN GRACIAS
Excelente!
Muchas gracias!
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.
que chotes! me salvaste las naylos
Si U.Nombre = null, devolverá null
07:40 NULL 07:40
NULL 19:19 NULL
07:40 NULL 07:40
deben poner SET CONCAT_NULL_YIELDS_NULL OFF; antes del Select
Gracias, me sirvió
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
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’.
muy bueno el ejemplo me ayudo demasiado.