Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-02-2005
RyAr RyAr is offline
Miembro
 
Registrado: oct 2003
Posts: 74
Poder: 21
RyAr Va por buen camino
Question Formatear y concatenar salida de datos

Buenas,

Tengo una tabla en SQL Server en la cual estan usuarios, y un numero de socio, con esta estructura:

Código SQL [-]
select Usr_Nombre, Usr_TarjetaA, Usr_TarjetaB, Usr_TarjetaC, Usr_TarjetaD from tbl_Usuarios;

Por ejemplo devolveria estos datos: "Juan", 2125, 1458, 238, 11

Me gustaria que la consulta me devolviera lo siguiente: "Juan", "2125 1458 0238 0011"

Es decir, me gustaria lo primero formatear los campos Usr_TarjetaA, Usr_TarjetaB, Usr_TarjetaC, Usr_TarjetaD para que se completaran con 0 hasta las 4 cifras, despues pasarlo a texto para poderlos concatenar dejando un espacio entre ambos, devolviendo lo que seria un numero de socio con el formato de una tarjeta de credito.

¿¿¿Alguien me ayuda con esta consulta???.

Saludos, y mil gracias por adelantado.

Última edición por RyAr fecha: 17-02-2005 a las 12:58:02.
Responder Con Cita
  #2  
Antiguo 17-02-2005
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
Hola,

Te podemos ayudar, nada más que no especificas que motor de BD estás utilizando. Considerá que dependiendo el motor es la forma en que se armará la sentencia SQL, y no todos soportan lo mismo.

Saludos!
__________________
Suerte
.: Gydba :.
Responder Con Cita
  #3  
Antiguo 17-02-2005
RyAr RyAr is offline
Miembro
 
Registrado: oct 2003
Posts: 74
Poder: 21
RyAr Va por buen camino
Ayyy, digo todas especificaciones y se me olvida el motor desde luego donde tengo la cabeza. Es SQL Server, perdonar el olvidoooo.

Saludos
Responder Con Cita
  #4  
Antiguo 17-02-2005
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
Hola,

No soy bueno con el SQL Server, pero algo así sería la idea:
Código SQL [-]
SELECT 
  Usr_Nombre, 
  (Replicate('0', 4 - Len(Usr_TarjetaA)) + Usr_TarjetaA + ' ') +
  (Replicate('0', 4 - Len(Usr_TarjetaB)) + Usr_TarjetaB + ' ') +
  (Replicate('0', 4 - Len(Usr_TarjetaC)) + Usr_TarjetaC + ' ') +
  (Replicate('0', 4 - Len(Usr_TarjetaD)) + Usr_TarjetaD + ' ') 
FROM tbl_Usuarios
A lo mejor tendrías que hacer un CAST por el tipo de datos, puesto que deberían ser de tipo string para que te funcione el Len.

Quizás con una SP se simplifique la repetición, pero bueno, es lo más rápido que te puedo hacer.

Saludos!
__________________
Suerte
.: Gydba :.
Responder Con Cita
  #5  
Antiguo 18-02-2005
RyAr RyAr is offline
Miembro
 
Registrado: oct 2003
Posts: 74
Poder: 21
RyAr Va por buen camino
Buenas y gracias!!!

Segui tus consejos y al final la consulta ha quedado de esta manera por si alguien la quiere:

Código SQL [-]
SELECT 
  Usr_Nombre, 
  CAST(REPLICATE('0', 4 - { fn LENGTH(Usr_TarjetaA) }) AS varchar) + CAST(Usr_TarjetaA AS varchar) + ' ' + 
  CAST(REPLICATE('0', 4 - { fn LENGTH(Usr_TarjetaB) }) AS varchar) + CAST(Usr_TarjetaB AS varchar) + ' ' + 
  CAST(REPLICATE('0', 4 - { fn LENGTH(Usr_TarjetaC) }) AS varchar) + CAST(Usr_TarjetaC AS varchar) + ' ' + 
  CAST(REPLICATE('0', 4 - { fn LENGTH(Usr_TarjetaD) }) AS varchar) + CAST(Usr_TarjetaD AS varchar) AS Usr_NumeroTarjeta, 
  FROM 
  tbl_Usuarios ;

Gracias por todo!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 21:27:18.


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
Copyright 1996-2007 Club Delphi