[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