![]() |
Consulta con la funcion CONCAT
Buenos días:
Estoy desarollando un sistema con Delphi y estoy conectandome a una BD MYSQL con los componentes MYDAC de DEVART, son famosos. Resulta que cuando hago una consulta con esta: Select concat(nombre,' ',ApellidoP,' ', ApellidoM,' ') as NombreCompleto from tablanombres Pues el resultado es que aparece un listado con una columna "NombreCompleto" con el nombre completo de la persona por que concatena los campos nombre, ApellidoP y ApellidoM y ademas pone un espacio entre ellos. Eso es normal y facil de entender. LO curioso es que si por alguna razòn la columna ApellidoP en algunos de sus registros no tiene ningun valor entonces en Delphi...el valor de NombreCompleto aparece totalmente vacio. Si hacemos una prueba directa de esa consulta sobre MYSQL el valor de NombreCompleto si aparece completo...es decir...solo omite el ApellidoP como es de esperarse pero si muestra el Nombre y el ApellidoM, esta raro El componente que uso es el Tquery Alguien sabe por que? Gracias.:confused::eek: |
Es bastante raro lo que mencionas, en lo personal uso mas que todo los componentes Zeos que son libres y gratuitos y no solo sirven para MySQL sino tambien para otros servidores; pero tambien tengo instalado los componentes MyDac y he hecho la prueba y todo ha ido bien, aunque la version que tengo instalada de MyDac es "mydac.v5.20.1.14" y mi versión de MySQL es 5.0.37 .;)
De todas formas si tu version de MyDac es superior o inferior puede que sea un Bug.;) Saludos...:) |
La solucion
Resulta que si hay campos de una base de datos que contengan valores NULL
la concatenación no se realiza por la función CONCAT en MYSQL. Para lograrlo en tal caso se puede usar una funcion llamada:COALESCE Si encuentra un valor nulo lo sustituye por el valor indicado, entonces quedaría la consulta así: SELECT idprospecto, razonsocial, concat(COALESCE(ApellidoP," "),' ',COALESCE(ApellidoM," "),' ', COALESCE(Nombre," ")) as ajasNombre, RFC FROM prospectos order by razonsocial En este caso si encuentra valores null, los sustituye por un espacio. :D:D:D:D Esa es la solución. |
La franja horaria es GMT +2. Ahora son las 07:31:11. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi