varchar(10) mysql só suportará 10 caracteres. Logo (XX) XXXX-XXXX que contém 12 caracteres jamais será salvo assim.
A idéia da máscara é justamente mascarar um valor recebido sem formato.
Ou seja, não deve ser persistido assim.
D
debuggercore
Certo, mas digamos que eu altere o valor varchar para 12 acredito que ainda terei problemas certo?
D
drsmachado
Para persistir não. Talvez ao apresentar valores salvos com a máscara.
O tipo varchar permite quaisquer caracters ASCII em qualquer combinação, até o limite de 255 caracteres. Para o MySQL, mais do que 255 caracteres caracteriza um tipo text, que tem a mesma prerrogativa, sem esta limitação.
D
debuggercore
Boa, vou tentar ver aqui qualquer coisa eu posto novamente, mas acredito que com essas dicas da para resolver muita coisa , caso não consiga posto uma resposta.
F
fabiocortolan
Particularmente eu acho q vc deveia salvar o campo sem máscara e formatar apenas na tela, eu já tive alguns problemas com campos persistidos com máscaras (em sistemas legados). Em meus sistemas persisto todos os campos sem máscara (inclusive CNPJ, CPF, CEP, entre outros).
D
drsmachado
A forma ideal é salvar sem máscaras.
D
debuggercore
Bom realmente acho que o correto é salvar sem mascara mesmo, o problema que estou tendo é que eu tenho um javascript no meu form apenas para segurar que o usuário digite no padrão ([telefone removido] e estou tendo dificuldade ao persistir sem mascara mesmo no apenas [telefone removido] ok?
F
fabiocortolan
Posta o erro q está ocorrendo e o código onde vc faz a persistência dos dados.
D
debuggercore
Veja o erro que está dando lembrando que pf_telefone é varchar(12):
O ideal é sempre salvar sem máscara e como string (preservando os zeros à esquerda). Ou seja, um CNPJ como o do Banco do Brasil (00.000.000/0001-91) deve ser salvo como 00000000000191.
Se você tiver problemas de espaço e souber que um determinado campo tem sempre 14 dígitos (no caso do CNPJ) pode guardar como numérico mesmo, mas sempre dá aquela dor de cabeça do programador que não sabe botar zeros à esquerda
F
fabiocortolan
Vc está tentando persistir um dado q excede o tamanho da coluna, no caso a coluna “pf_telefone” confira o valor q vc está tentando persistir, com certeza é maior q 12 ou a coluna é menor q isso.
D
debuggercore
Uma dúvida no meu formulário eu tenho a mascara exatamente para que o usuário digite nesse padrão: ([telefone removido]. Há alguma maneira de que quando eu persistir no banco ficar somente o numero do telefone sem alguma mascara com o EX: [telefone removido] ? Como posso fazer pois do jeito atual ele fica assim persistido: ([telefone removido]!!!
F
fabiocortolan
Vc pode remover a máscara no java, antes de persistir, no meu caso eu crio uma classe Util e dentro dessa classe tenho alguns métodos q utilizo em vários locais, um deles é para remover a máscara de qualquer campo q eu queira persistir no banco, segue abaixo um exemplo:
publicstaticStringunmaskNumero(Stringtexto){StringBuildersb=newStringBuilder();sb.append(texto);// Percorre a String e verifica se o caracter é um dígito e em caso negativo remove for(inti=0;i<sb.length();i++){if(!Character.isDigit(sb.charAt(i))){sb.deleteCharAt(i);i--;// subtrai 1 de "i" para verificar índice anterior já que um dígito foi removido do texto}}returnsb.toString();}