Ver Mensaje Individual
Antiguo 31-ene-2003, 11:05   #31 (permalink)
Cain
Cain ha deshabilitado el karma
 
Avatar de Cain
 
Fecha de Ingreso: noviembre-2002
Ubicación: Catalunya
Mensajes: 6.494
Enviar un mensaje por AIM a Cain Enviar un mensaje por Yahoo  a Cain
BD: MySQL

Pregunta: ¿Como puedo concatenar campos y valores cuando pueden haber NULL?

Respuesta:

La función CONCAT() devuelve NULL siempre que alguno de sus argumentos es NULL. Esto nos puede dar problemas al usar instrucciones como:
Código:
UPDATE tabla SET nombre_completo = CONCAT(nombre, " - ", apellidos)
Los registros donde nombre y apellido no sean NULL, podrán obtener un nombre_completo, pero si nombre o apellido son NULL, el registro no tendrá <i>nombre_completo</i>.

¿Cómo solucionamos este problema? Utilizando la función COALESCE().

COALESCE devuelve el primer argumento diferente de NULL que se le atorgue. Es decir:
Código:
COALESCE("hola", NULL)
Devuelve "hola"
Código:
COALESCE(NULL, "hola")
Devuelve "hola"

Aprovechando esto, podemos hacer:
Código:
UPDATE tabla SET nombre_completo = CONCAT(COALESCE(nombre, ""), " - ", COALESCE(apellidos, ""))
Ahora ya podremos obtener un nombre_completo para todos los registros :D
__________________
http://malditofriki.com/
Cain está desconectado   Responder Citando