Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Identar cadenas en una consulta (https://www.clubdelphi.com/foros/showthread.php?t=58638)

lledesma 27-07-2008 00:48:35

Identar cadenas en una consulta
 
Hola comunidad:
Necesito concatenar cadenas de texto en una consulta. El problema que al utilizar '||' obtengo el resultado pero los datos no aparecen identados:
P.e.



Código SQL [-]select apellido||nombre||dni||domicilio from maestro


y obtengo:

PEDRO SALVATIERRA 20200230 AV.SALVADOR 456
SALADO JUAN 34345234 SARMIENTO 234

Y NECESITO QUE LAS COLUMNAS APELLIDO,NOMBRES,DNI,DOMICILIO QUEDEN ALINEADAS, Se entiende ?. Muchas gracias por todo.

Saludos

marcoszorrilla 27-07-2008 11:40:14

No sé que motor estás utilizando, pero supongo que el problema es que te corta los espacios en blanco y te devuelve cadenas de distintos anchos para una misma columna, tendrías que probar rellenando con espacios en blanco.

Un Saludo.

lledesma 27-07-2008 14:28:58

Hola Marcos:
Gracias por tu respuesta, si, olvide el motor, es firebird. Intenté llenar con espacios en blanco, pero el problema sigue. Utilicé la udf rpad que llena con espacios lo que resta de la cadena pero el largo de la cadena sigue siendo de tamaños distintos.

un saludo

marcoszorrilla 27-07-2008 18:01:55

Mira a ver si a RPad le puedes pasar como parámetro el largo total del campo, por ejemplo 40 - el largo real.

Rpad(MiCampo, 40 - Lenght(MiCampo))

Length no estoy seguro de que exista en Firebird.

Un Saludo.

celades1 27-07-2008 18:57:02

Hola

Yo para esto utilizo udf propias, pero se puede hacer sin udf utilizando substring pero previamente alargamos el campo para luego con el substring darle el tamaño que queramos

Código SQL [-]
select 
substring(apellido||'                                                        ' from 1 for 50)|| substring(nombre||'                                                     ' from 1 for 50)|| substring(dni||'                                         ' from 1 for 15)
|| substring(domicilio||'                                                                 ' from 1 for 70)   from maestro

No se si esta bien la sintaxis pero creo que se entiende la idea

Saludos

lledesma 28-07-2008 01:04:42

Gracias por las respuestas:

La verdad que no funciona y el problema por lo que veo es el tamaño de los caracteres. pe. DANIELA y MARIELA tienen la misma cantidad de letras sin embargo en la consulta la cadena MARIELA es mas larga por lo que en el resultado final quedan distintas.

El sentido de esto en es realidad la necesidad de armar un reporte configurable, es decir, el usuario puede seleccionar de una lista de campos posibles los que necesite imprimir. Genero con los campos seleccionados una consulta:

Código SQL [-]
Select APELLIDOS||NOMBRES||...||.. FROM MAESTRO


y obtengo una cadena que luego envio a un reporteador, espero se entienda. Si existe un modo mas sencillo de hacerlo agradecido.

Saludos y gracias de nuevo


La franja horaria es GMT +2. Ahora son las 06:03:09.

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