Discussion:
[firebase-br] Preencher com zeros a esquerda
clm_silva-zC5dV/vN+a1fJ/
2005-08-27 18:32:54 UTC
Permalink
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;

No Mes 8 por exemplo traz 8, queor que traga 08.

Obrigaduuuuuuuu.

Cléber.

No iBest, suas horas navegadas valem pontos que podem ser trocados por prêmios. Sem sorteio! Inscreva-se já! www.navegueeganhe.com.br
Mr.Mothman
2005-08-28 15:02:53 UTC
Permalink
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
Post by clm_silva-zC5dV/vN+a1fJ/
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
Caio Oliveira
2005-08-29 12:59:32 UTC
Permalink
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
Post by Mr.Mothman
Caro clm_silva,
Você pode utilizar as funções externas "rpad" e "lpad" que tem a
<l ou r>pad (<string_de_entrada>, <tamanho_final>, <caracter_de_preechimento>)
<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;
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
Post by clm_silva-zC5dV/vN+a1fJ/
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
______________________________________________
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
Roberto - Sui Generis
2005-09-19 19:13:27 UTC
Permalink
Está me ocorrendo um Lock Conflit numa STored Procedure... É possível isto
ocorrer ???
Tem como executar um Commit dentro de uma Stored Procedure

Roberto Krug
Firebird 1.5




______________________________________________
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
Joel do Prado Junior
2005-09-19 19:23:27 UTC
Permalink
Qual o tipo de isolamento você está utlizando no componente que está
chamando está Stored Procedure?

Não é possível executar um commit dentro de uma Stored Procedure !
Post by Roberto - Sui Generis
Está me ocorrendo um Lock Conflit numa STored Procedure... É possível isto
ocorrer ???
Tem como executar um Commit dentro de uma Stored Procedure
Roberto Krug
Firebird 1.5
______________________________________________
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
Roberto - Sui Generis
2005-09-19 19:36:10 UTC
Permalink
read_committed
rec_version
nowait
Post by Mr.Mothman
Post by Joel do Prado Junior
Qual o tipo de isolamento você está utlizando no componente que está
chamando está Stored Procedure?
Não é possível executar um commit dentro de uma Stored Procedure !
Post by Roberto - Sui Generis
Está me ocorrendo um Lock Conflit numa STored Procedure... É possível
isto
Post by Joel do Prado Junior
Post by Roberto - Sui Generis
ocorrer ???
Tem como executar um Commit dentro de uma Stored Procedure
Roberto Krug
Firebird 1.5
______________________________________________
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
Post by Joel do Prado Junior
Post by Roberto - Sui Generis
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Loading...