Em 21/11/15, Danilo Silva<[email protected]> escreveu:
> Em 21 de novembro de 2015 13:05, Tiago José Adami <[email protected]>
> escreveu:
>
>> Em 21 de novembro de 2015 11:26, Osvaldo Kussama
>> <[email protected]> escreveu:
>> > Em 21/11/15, Luciano Reis<[email protected]> escreveu:
>> >> Bom dia pessoal, eu fiz uma busca sobre tipos de dados para campos
>> >> específicos no PostgreSQL para gravar CEP,CPF, CNPJ, telefones e
>> >> valores
>> >> monetários e encontrei opiniões muito diversas uns defendem que CPF
>> >> tem
>> de
>> >> ser guardado como string outros não.
>> >> É um primeiro projeto que eu vou iniciar usando o PostgreSQL e não sei
>> >> tomar essa decisão, como não encontrei nada concreto e fundamentado
>> estou
>> >> recorrendo a comunidade.
>> >
>> > Creio que todos estes campos sejam numéricos e portanto devem ser
>> > armazenados como números (inteiro ou decimal de precisão arbitrária).
>>
>> Eu pratico a seguinte regra: mesmo que o valor seja numérico, se não
>> for utilizado para cálculos matemáticos e não for monetário, eu
>> prefiro armazenar em VARCHAR, e geralmente com um limite maior do que
>> o atributo exige: para CPF e CNPJ eu uso VARCHAR(20), por exemplo.
>>
>> Costumo usar um campo varchar(14) para considerar CPF e CNPJ, onde o
>> dado
> é gravado já formato, retirando-se os pontos e traços, etc. Também utilizo
> uma CHECK CONSTRAINT para garantir que sejam gravados dados com 11 ou 14
> digitos, ou seja, dados com quantidade de digitos diferentes de 11 e 14 não
> serão gravados.
>
> Devemos considerar que o tipo de dado INT não é recomendado para guardar
> informações como CPF e CNPJ, pois caso a informação contenha zeros a
> esquerda, esses zeros serão ignorados e não teremos uma informação íntegra.
>
SELECT to_char(1234567::int, '000"."000"."000"-"00') as CPF;
cpf
-----------------
000.012.345-67
Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral