Ir para conteúdo
Fórum Script Brasil
  • 0

Formatação numérica


Marco Canhoto

Pergunta

Olá a todos!

tenho um campo de numero em que consta no mysql como DECIMAL(10,0). Quando eu gravo o registro 1234567 ele aceita e mantem o registro dessa forma, mas se eu quero gravar 1.234.567, ele não aceita dizendo que é um valor decimal incorreto.

Só que eu preciso gravar o número na forma 1.234.567 como valor numérico mesmo.

Que tipo de dados eu devo usar nessa coluna e como faço para formatar números?

Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Oi, 'Marco Canhoto' ,

Você está confundindo a forma numérica que reside no banco de dados com a forma que é apresentada ao usuário final. O jeiro que você quer não é uma representação numérica. É uma string a ser representada como char ou varchar.

Outro ponto é que para o MySQL o ponto é casa decimal e a vírgula é separador de milhar.

Oi, 'Marco Canhoto'

continuando Você pode usar a função format para obter o efeito desejado.

FORMAT(X,D)

Formata o número X com um format como '#,###,###.##', arredondado para D casas decimais,

e retorna o resultado como uma string. Se D é 0, o resultado não terá nehum ponto decimal

ou parte fracionária:

Link para o comentário
Compartilhar em outros sites

  • 0
Certo, mas como eu construo isso no mysql. Entendo que devo formatar o número, mas não sei escrever a função. Poderia me ajudar?

A função já existe (ver capítulo 6 manual mysql versão 4.1 em portugues) deve ser usada somente quando você fizer as consultas (selects).

Para guardar a informação utilize somente o ponto para demonstrar as casas decimais.

Link para o comentário
Compartilhar em outros sites

  • 0

Complementando,

Construi a storage funcion abaixo que funcionará se a versão de seu MySQl for 5.0.22 ou mais atual.

DELIMITER $$;

DROP FUNCTION IF EXISTS `test`.`Formata_numero`$$

CREATE DEFINER=`root`@`localhost` FUNCTION `Formata_numero` (valor double, decimais tinyint)
    RETURNS char(20) 
BEGIN
   return replace(replace(replace(format(valor,2),'.','v'),',','.'),'v',',');
END$$

DELIMITER;$$
Para usá-la veja o exemplo abaixo:
select Formata_numero(valor,2) from teste

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...