CPF como tipo varchar ou integer, como faço?

Pessoal no meu banco que tipo de dado eu posso declar variaveis como cpf,rg e numero de telefones,se poderem me responder eu serei muito grato ? Vejam a tabela abaixo:

CREATE TABLE “FichaCadastro_teste_e-gen”
(
“nomeAssistido” character(300),
“cpfAssistido” character(14),
“rgAssistido” character(10),
“estadoCivilAssistido” character(9),
“sexoAssistido” character(9),
“enderecoAssistido” character(300),
“bairroAssistido” character(100),
“cidadeAssistido” character(80),
“cepBairroAssistido” character(14),
“telefResAssistido” character(14),
“telefCelAssistido” character(10),
“observacaoAssistido” character(300),
“codAssistido” numeric NOT NULL,
CONSTRAINT “FichaCadastro_teste_e-gen_pkey” PRIMARY KEY (“codAssistido”)
)

Para facilitar

CPF -> possui zeros na frente, alguns preferem guardá-lo formatado. Eu prefiro armazenar como VARCHAR2, pois se for como numeric você além de não poder guardá-lo formatado, os zeros da frente vão ser suprimidos!

Telefone -> se você for guardá-lo com pontos, traços etc é bom que seja VARCHAR2

RG -> alguns estados (se eu não me engano MG é um deles) o RG possui letras, portanto é bom armazená-lo como VARCHAR2

Mas modelagem vai de cada um, o que você acha que é melhor para o teu requisito!
É óbvio que alguns vão vir ou concordando, ou com opniões diferente!

Varchar em tudo.
Para validar você pode remover os caracteres não númericos e pronto.

[]´s

Daniel

Se for guardar como texto no banco melhor guardar como char[11] sem guardar máscara somente os número, pois, o char obriga que a sua string tenha 11 caracteres, não mais e nem menos.
Agora se for guardar como inteiro, lembre-se que cpfs iniciando com zero você terá que tratar na aplicação e preencher na frente a quantidade de zeros que está faltando para completar 11 dígitos.

Eu prefiro guardar o CPF em Integer.
E deixo para as mascaras dos compoenentes completarem com a mascara e os zeros :slight_smile:

Ja RG e Telefone, como varchar

[quote=saninaimayer]Se for guardar como texto no banco melhor guardar como char[11] sem guardar máscara somente os número, pois, o char obriga que a sua string tenha 11 caracteres, não mais e nem menos.
Agora se for guardar como inteiro, lembre-se que cpfs iniciando com zero você terá que tratar na aplicação e preencher na frente a quantidade de zeros que está faltando para completar 11 dígitos.[/quote]

Ou então definir a coluna como integer(11) zerofill, que vai preencher com os zeros a esquerda

CPF, RG e Telefone sempre declaro no banco com varchar e consequentemente no java string.

Motivo zeros a esquerda …

Use varchar no banco, ou similar…

guardar formantado é furada, não há motivo pra guardar a formatação de CPF que é igual para tudo…

No java não use um tipo String para representar, use um tipo Cpf, que encapsula uma char[] contendo o CPF… afinal de contas, um Cpf não é uma string, é um objeto, que não existe na API padrão, e portanto deve ser modelado…

RafaelViana, esta maneira eu não conhecia. Vou aplicar em minhas aplicações.

=D