Conctenaçao de campos

Firebird

19/04/2012

Olá a todos,

Preciso concatenar alguns campos de uma tabela, e alinha-los.
Ex:
Select Nome || - || Saldo From Clientes

O resultado do select acima me mostra:
Fulano aaaaaaa-12,00
Fulano abababababababa-12,00
Fulano ab-12,00

Preciso que saia assim:
Fulano aaaaaaa - 12,00
Fulano abababababababa - 12,00
Fulano ab - 12,00

Alguem tem alguma solucao ?

Obrigado.

Angelo Zagatti

Angelo Zagatti

Curtidas 0

Respostas

Angelo Zagatti

Angelo Zagatti

19/04/2012

Olá a todos,

Preciso concatenar alguns campos de uma tabela, e alinha-los.
Ex:
Select Nome || - || Saldo From Clientes

O resultado do select acima me mostra:
Fulano aaaaaaa-12,00
Fulano abababababababa-12,00
Fulano ab-12,00

Preciso que saia assim:
Fulano aaaaaaa - 12,00
Fulano abababababababa - 12,00
Fulano ab - 12,00

Alguem tem alguma solucao ?

Obrigado.





por algum motivo o post está desconfigurado

Preciso que saia assim:
Nome Valor
Fulano aaaaaaa - 12,00
Fulano abababababababa - 12,00
Fulano ab - 12,00
GOSTEI 0
Angelo Zagatti

Angelo Zagatti

19/04/2012

Olá a todos,

Preciso concatenar alguns campos de uma tabela, e alinha-los.
Ex:
Select Nome || - || Saldo From Clientes

O resultado do select acima me mostra:
Fulano aaaaaaa-12,00
Fulano abababababababa-12,00
Fulano ab-12,00

Preciso que saia assim:
Fulano aaaaaaa..............................................12,00
Fulano abababababababa................................12,00
Fulano ab.......................................................12,00

Alguem tem alguma solucao ?

Obrigado.





por algum motivo o post está desconfigurado

Preciso que saia assim:
Nome Valor
Fulano aaaaaaa..............................................12,00
Fulano abababababababa................................12,00
Fulano ab.......................................................12,00
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

19/04/2012

Talvez você esteja tendo um erro de conversão, selecione o Saldo como texto usando
CAST(Saldo AS VARCHAR) AS Saldo
;
Boa sorte.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

19/04/2012

Acho que você vai fazer algo assim:
SELECT Nome||REPLICATE(´.´, 50-CHAR_LENGTH(NOME))||CAST(Saldo AS VARCHAR) AS Saldo


Onde REPLICATE é uma função que repete um determinado caracter várias vezes. No caso, eu repliquei o ponto (.) uma quantidade de caracteres igual a 50 - o comprimento do nome, para padronizar em 50 caracteres antes do valor.

Não sei se existe a função REPLICATE em Firebird, se não existir, você dá um jeito de encontrar uma.

Boa sorte.
GOSTEI 0
Angelo Zagatti

Angelo Zagatti

19/04/2012

Joel, obrigado pela ajuda, mas nao encontrei a funcao replicate() no firebird.
Tambem nao sei como fazer uma udf e nao achei nada na net.
Caso vc tenha alguma sugestao, eu agradeço.

Abraços,
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

19/04/2012

Dá uma olhada nesses dois links, talvez te ajudem. No momento não vou nem poder te ajudar muito, pois faz muito tempo que não uso Firebird e, quando usei, nunca fui tão fundo.
http://www.firebase.com.br/fb/downloads.php?categ=6
http://gustavohenriquephn.wordpress.com/2008/04/17/utilizando-udf-no-firebird/

A ideia da função é
ENTRADA:
CARACTER:TEXTO, QUANTIDADE:INTEIRO;

SAÍDA
RESULTADO:TEXTO;

VARIÁVEIS
I:INTEIRO;

INÍCIO

RESULTADO = ´´;
PARA I DE 0 ATÉ QUANTIDADE
RESULTADO = RESULTADO + CARACTER;

FIM



Deu pra sacar?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

19/04/2012

Em ÚLTIMO CASO, tenta criar um Stored Procedure que faça a mesma coisa.
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

19/04/2012

Select (Nome as char(30)) || ` - ´ || Saldo From Clientes
GOSTEI 0
Angelo Zagatti

Angelo Zagatti

19/04/2012

Achei um UDF que replica um caracter.

Vou fazer mais testes.

Obrigado a todos pela ajuda.
GOSTEI 0
POSTAR