Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

concatenar y valores nulos

Estas en el tema de concatenar y valores nulos en el foro de Mysql en Foros del Web. Hola amigos. Mi problema es el siguiente. Quiero unir tres campos y mostrarlo en uno. Para ello, tengo esto: concat (nombre_empleado,' ',apellido1,' ',apellido2) as nombre ...
  #1 (permalink)  
Antiguo 09/01/2012, 08:01
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 15 años, 6 meses
Puntos: 6
concatenar y valores nulos

Hola amigos. Mi problema es el siguiente. Quiero unir tres campos y mostrarlo en uno. Para ello, tengo esto:
concat (nombre_empleado,' ',apellido1,' ',apellido2) as nombre

Que ocurre, que si alguno de los campos no tiene valor, la concatenacion no me devuelve nada.

He probado esto
concat (nombre_empleado,' ',apellido1,' ',apellido2 is null) y si el campo apellido2 es nulo, ahora la concatenacion si me devuelve valor, pero donde apellido 2 me pone un 0 o un 1, dependiendo de si uso is null o is not null.

Como debo hacerlo para que me muestre siempre la concatenacion aunque alguno de los campos sea nulo.

Gracias. Un saludo.
  #2 (permalink)  
Antiguo 09/01/2012, 08:21
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: concatenar y valores nulos

Bueno, ya me respondo yo, sería algo así:

concat (`nombre_empleado`,' ',apellido1,' ',ifnull(apellido2,'')) AS nombre

Un saludo.
  #3 (permalink)  
Antiguo 09/01/2012, 09:17
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 11 meses
Puntos: 447
Respuesta: concatenar y valores nulos

Es mejor y mucho más sencillo utilizar CONCAT_WS (concat with separator), ya que realiza la validación automática. checa este script:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +-----------+--------------+--------------+
  3. | nombre    | apellido_pat | apellido_mat |
  4. +-----------+--------------+--------------+
  5. | JUAN      | NULL         | NULL         |
  6. | FRANCISCO | HERNANDEZ    | NULL         |
  7. | JESUS     | GONZALEZ     | MARTINEZ     |
  8. | JOSE      | NULL         | MACIAS       |
  9. +-----------+--------------+--------------+
  10. 4 rows in set (0.00 sec)
  11.  
  12. mysql> SELECT CONCAT_WS(' ', nombre, apellido_pat, apellido_mat) FROM tabla;
  13. +----------------------------------------------------+
  14. | CONCAT_WS(' ', nombre, apellido_pat, apellido_mat) |
  15. +----------------------------------------------------+
  16. | JUAN                                               |
  17. | FRANCISCO HERNANDEZ                                |
  18. | JESUS GONZALEZ MARTINEZ                            |
  19. | JOSE MACIAS                                        |
  20. +----------------------------------------------------+
  21. 4 rows in set (0.00 sec)

Saludos
Leo.
  #4 (permalink)  
Antiguo 10/01/2012, 09:37
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: concatenar y valores nulos

Hola, efectivamente, funciona perfecto. No lo entiendo, porque estuve buscando la sintaxis y explicaciones sobre esa funcion y me pareció ver que si algun valor era null, devolvía null, pero bueno, me imagino que miré mal.

Gracias. Un saludo.
  #5 (permalink)  
Antiguo 10/01/2012, 10:10
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: concatenar y valores nulos

Nada más tienes que leer el manual con más cuidado: Funciones de cadena
Cita:
CONCAT_WS() significa CONCAT With Separator (CONCAT con separador) y es una forma especial de CONCAT(). El primer argumento es el separador para el resto de argumentos. El separador se añade entre las cadenas a concatenar. El separador puede ser una cadena como el resto de argumentos. Si el separador es NULL, el resultado es NULL. La función evita valores NULL tras el argumento separador.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 10/01/2012, 11:27
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: concatenar y valores nulos

Pues que razón tienes, sabes lo que pasa, que estaba cebado con la funcion, y en vez de leer separador Null, leí la funcion null.

Bueno, espero que me sirva para otra.

Gracias por la ayuda. Un saludo.

Etiquetas: campos, concatenar, nulos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:00.