Zero a esquerda em string não numerica

Delphi

Firebird

12/08/2016

Preciso fazer uma consulta entre duas tabelas onde um campo string possui caracteres nao numericos. Segue exemplo:
Onde campo a.lote= s45

Select a.produto, formatFloat('00000',StrToInt(a.lote)) from tabela a
where a.codigo=100

Ele teria que retornar 00s45

Mas aqui da erro por causa do 's'.
Ivonei

Ivonei

Curtidas 0

Melhor post

Natanael Ferreira

Natanael Ferreira

12/08/2016

Agora vi que você usa Firebird.

No Firebird a função equivalente é LPad.

Teste assim:

'Select a.produto, LPad(a.lote, 5, 0) as lote from tabela a where a.codigo = 100'


- 0 (zero) é o caracter que você quer que repita;

- 5 é quantidade de casas de sua string;

Veja este link:
http://mail.firebase.com.br/pipermail/lista_firebase.com.br/2005-August/018282.html
GOSTEI 1

Mais Respostas

Natanael Ferreira

Natanael Ferreira

12/08/2016

Qual o banco de dados?

No SQL Server tem a função Replicate.

Teste assim:

'Select a.produto, REPLICATE(0, 5 -LEN(a.lote)) + a.lote from tabela a where a.codigo = 100'


- 0 (zero) é o caracter que você quer que repita;

- 5 é quantidade de casas de sua string;

- A função Len serve para contar quantas caracteres tem seu campo.

Veja este link:
https://social.msdn.microsoft.com/Forums/pt-BR/cf525c8e-b536-41a7-8e34-23ab66a20fb5/acrescentar-zeros-esquerda-no-tamanho-do-campo-correto?forum=520
GOSTEI 0
Ivonei

Ivonei

12/08/2016

Usei o LPad e deu certinho o que eu preciso. Muito obrigado pela atenção Natanael.
GOSTEI 0
POSTAR