Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Concatenar dos campos en Consulta (https://www.clubdelphi.com/foros/showthread.php?t=84813)

amerika111 10-12-2013 03:11:00

Concatenar dos campos en Consulta
 
buenas tardes, tengo una consulta o problematica, realizo una consulta en sql concatenando dos campos, habra una manera de que se mantenga un espacio estandar entre los dos campos concatenados.

Código SQL [-]
 select fname + '  ' +aname from empleados

teniendo como resultado
fname+ aname
SMITH CLERK
ALLEN SALESMAN
WARD SALESMAN
JONES MANAGER
MARTIN SALESMAN

pero necesitaria que se viera asi
SMITH CLERK
ALLEN SALESMAN
WARD SALESMAN
JONES MANAGER
MARTIN SALESMAN

que no importando la longitud del primer campo se mantuviera la misma separación con el siguiente campo, y creo que no se alcanza apreciar en el ejemplo

pero lo que quisiera lograr y si se puede?

seria campo1 + 2 espacios blanco+ campo2
un ejemplo seria longitud de campo1 (8)
y teniendo en cuenta que los espacios son dos
entonces seria campo1 + 2 espacios+ campo 2
ahora si bien un registro del campo1 con longitud de 5, entonces seria campo1+5 espacios+campo2
asi siempre se mantendra la distancia con el campo2 que se concatene

ecfisa 10-12-2013 06:32:15

Hola amerika111.

No uso MS SQL pero supongo que con las funciones SUBSTRING y LEN, tendrías que lograr lo que buscas:
Código SQL [-]
SELECT CAMPO1 + SUBSTRING('[8 espacios]', 1, 8 - LEN(CAMPO1)) + CAMPO2 AS UN_NOMBRE
FROM TU_TABLA
En este ejemplo se completa a CAMPO1 con tantos espacios como caracteres le falte para llegar a ocho.

En el caso que el primer campo se tratase de un apellido y desearas "rellenarlo" con espacios hasta llegar a treinta caracteres, deberías usar:
Código SQL [-]
SELECT APELLIDO + SUBSTRING('[30 espacios]', 1, 30 - LEN(APELLIDO)) + NOMBRE AS APELLIDONOMBRE
FROM CLIENTES
Pero la correcta tabulación de la salida dependerá del font que estes empleando.

Por otro lado desconozco si MS SQL permite usar otros tipos que cadenas en las funciones y de ser así, tal vez tengas que recurrir a algún moldeo. En el caso de Firebird no plantea ninguna dificultad.

Saludos :)

amerika111 10-12-2013 17:57:47

Gracias por la ayuda, lo voy a realizar de esa manera..
tambien habia encontrado esta forma de hacerlo.

Código SQL [-]
SELECT APELLIDO + space(30-len(APELLIDO))+NOMBRE AS APELLIDONOMBRE
FROM CLIENTES

ecfisa 10-12-2013 18:12:11

Hola amerika111, me alegra que lo solucionaras ^\||/

Y con la función SPACE (que acabo de conocer :)) queda mucho mas entendible.

Saludos :)


La franja horaria es GMT +2. Ahora son las 01:59:55.

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