[firebase-br] Preencher com zeros a esquerda

Caio Oliveira news em caiosistemas.com.br
Seg Ago 29 09:59:32 -03 2005


Olá,

Outra sugestão é usar as procedures abaixo:


/* PC_len(str)
// Essa procedure devolve o tamanho da STRING passada como parâmetro.
// Original de Ivan Prenosil
  Adaptada por: Caio José Hugueney Lopes de Oliveira */
CREATE PROCEDURE PC_Len (str VARCHAR(100))
RETURNS (len INTEGER) AS
DECLARE VARIABLE pat VARCHAR(100);
BEGIN
len = null;
IF (str IS NULL) THEN EXIT;
pat = '';
len = 0;
WHILE (NOT str LIKE pat) DO BEGIN
pat = pat || '_';
len = len + 1;
END
END
^

/* PC_StrZero(str)
// Essa procedure devolve o tamanho da STRING passada como parâmetro.
// Original de: Ivan Prenosil
Adaptada por Caio Jose Hugueney Lopes de Oliveira */
CREATE PROCEDURE PC_StrZero (vstr VARCHAR(100), nTam INT)
RETURNS (vstr2 varchar(100)) AS
DECLARE VARIABLE vallen INT;
BEGIN
vstr2 = null;
EXECUTE PROCEDURE PC_LEN vstr
RETURNING_VALUES vallen;

IF (vstr IS NULL) THEN EXIT;
IF (nTam IS NULL) THEN EXIT;
vstr2 = vstr;
WHILE (nTam > vallen) DO
    BEGIN
    vstr2 = '0'||vstr2;
    vallen = vallen +1;
    END

END
^

[]s

Caio Oliveira

Mr.Mothman wrote:
> Caro clm_silva,
> 
>   Você pode utilizar as funções externas "rpad" e "lpad" que tem a
> sintaxe abaixo:
> 
>   <l ou r>pad (<string_de_entrada>, <tamanho_final>, <caracter_de_preechimento>)
> 
>   onde:
> 
>   <l ou r>pad = nome da função;
>   <string_de_entrada> = o string que você deseja "converter";
>   <tamanho_final> = o tamanho que o string deverá ter no final (inteiro); e
>   <caracter_de_preenchimento> = o caracter que deverá ser duplicado
> para completar o <string_de_entrada> até o tamanho <tamanho_final>.
> 
>   Obs.: RPAD completa o <string_de_entrada> com o
> <caracter_de_preenchimento> sendo inserido à direita, ou seja, no
> final do string e
>            LPAD completa o <string_de_entrada> com o
> <caracter_de_preenchimento> sendo inserido à esquerda, ou seja, no
> início do string.
> 
>   Um exemplo para o seu caso?
> 
>   select lpad (extract (month from dt_cadastro), 2, '0') from tipo_documento;
> 
>   que poderia ser lido como:
> 
>   selecione da tabela tipo_documento todos os meses da coluna
> dt_cadastro, formatando os dados com zeros à esquerda com tamanho
> máximo de 2 caracteres.
> 
>   Beleza?
> 
>   Espero ter podido ajudá-lo.
> 
>   [ ]'s
> 
>   Mr.Mothman
> 
> On 8/27/05, clm_silva em ibest.com.br <clm_silva em ibest.com.br> wrote:
> 
>>Ai pessoal, como faço para preencher um campo com zeros a esquerda, como no exemplo abaixo pego o mes 8 mas quero que traga como 08.
>>
>>Select Cast(Extract(Month from V.DATA_INICIO) as Varchar(2)) from tabela;
>>
> 
> ...
> 
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> 





Mais detalhes sobre a lista de discussão lista