concatenar cadenas y NULL ????????????
HOLA foro estoy trabajanedo con firebird y me pasa el siguiente poblema
como concateno cadenas en una consulta de firebird pero si algunos de los campos es null todo es null como puedo hacer para covertir los null en un espacio vacio gracias de antemano por cualquier respuesta Saludos |
usa coalesce, es algo así:
|
Gracias RONPABLO por tu respuesta, hallé una solución expongo lo que hice a continuación por si a alguien le sirve.
Dado que cualquiera de los campos pueden ser nulos lo solucione asi
coalesce toma varios argumentos y devuelve el primero que NO es null por ejemplo si apellidos es null entonces devuelve el espacio vacio y si apellidos no es null devuelve el contenido de apellidos. Uso trim para concatenar si el nombre es null entonces null + ' ' = null y si no es null entocnes devuelve el contenido del campo apellido mas un espacio en blanco para concatenarlo al siguiente campo y asi sucesivamente |
Una mejor solucion es evitar los campos NULL como la plaga.
Es mas simple, es menos bug y es mas predecible. El unico lugar donde un NULL debe existir es cuando necesitas una logica triple (1,0, NULL) para marcar la inexistencia. Que de paso es algo raro. O deberia serlo. |
es mejor asi, el null si no se entiende bien es "impredecible "
|
yo el trim lo evito haciendo
o mejor dicho al concatener " ' ' || null " el resultado es null, entonces al estar dentro de coalesce(' ' || apellido1,'') y si apellido1 es null coalesce(' ' || null,'') ya me evite el trim |
pasa que algunos ponen en el nombre "juan " y en el apellido " perez " en tonces para que no haya una salida anormal le hago trim
|
si... muy cierto... yo para evitar eso hago el trim desde el momento de la captura en un onExit del edit ya que luego comparando me trae muchos problemas en la bd
|
aunque mejor seria un triger en la base de datos tambien no?
|
La franja horaria es GMT +2. Ahora son las 10:59:33. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi