Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carcleo

Moeda

Recommended Posts

Pessoal, boa noite!

 

Estou sofrendo com modedas no mysql

 

Eu coloco float(20,2), double(20,2) e até decimal(20,2)mas toda as vezes que vou entar gravar um valor do tipo:

 

123456789012.32, diz que ewsta fora do range.

 

Mas se eu colcar apenas 6 digitos antes do ponto passa.

 

Onde esta o erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Carcleo,

 

Simulei vossa alegação com o campo decimal(20,2)

 

 

Table valor
===========
valor_1, valor_2, valor_3, valor_4, valor_5
-----------
valor_1          decimal(3,2)
valor_2          decimal(4,2)
valor_3          decimal(5,2)
valor_4          decimal(6,2)
valor_5          decimal(20,2)

 

Inseri o valor citado:

insert into valor(valor_5)
values ('123456789012.32')

 

E o resultado foi:

NULL, NULL, NULL, NULL, '123456789012.32'

 

Ferramenta utilizada: MySQL Workbench

 

Se possível, posta a estrutura das tabelas caso realmente não conseguir.

 

Abraços.

 

_ _

Fabiano Abreu

Papo Sql - Um blog com tutoriais, dicas e truques sobre SQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tai:

CREATE TABLE `imoveiscadastrovenda` (
 `id_imovel` int(4) unsigned NOT NULL AUTO_INCREMENT,
 `codigo_imovel` varchar(10) NOT NULL DEFAULT '',
 `id_clientes_imovel` int(4) NOT NULL DEFAULT '0',
 `imovel_tipo_imovel` int(2) NOT NULL DEFAULT '0',
 `endereco_imovel` varchar(200) NOT NULL DEFAULT '',
 `bairro_imovel` varchar(100) NOT NULL DEFAULT '',
 `cidade_imovel` varchar(100) NOT NULL DEFAULT '',
 `estado_imovel` char(3) NOT NULL DEFAULT '',
 `preco_imovel` decimal(8,2) NOT NULL DEFAULT '0.00',
 `baixa_imovel` char(1) NOT NULL DEFAULT '',
 `descricao_imovel` text NOT NULL,
 `motivo_imovel` varchar(200) DEFAULT '',
 `valor_venda_imovel` decimal(10,2) DEFAULT NULL,
 `oportunidade_imovel` char(1) NOT NULL DEFAULT '',
 PRIMARY KEY (`id_imovel`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;

Só aceita gravar, no maximo, 6 caracters antes da virgula.

 

Qualquer que seja o lenght do decimal ou float ou double (10,2), (20,2).....Qualquer um só aceita 6 dgitos antes do ponto.

 

MySQL 6.0.0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. ta tranquilo de tempo.

 

Mas pensei assim(embora sei que meu pensamento esta errado):

 

Em minha região, dificilmente haverá um imóvel que passe de 999.000,00.

 

Então, deixei, provisoriamente até achar uma solução, como decimal(10,2).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Carcleo,

 

Você criou o campo preco_imovel com tamanho máximo de 8 caracteres, sendo que dois são decimais, então o que acontece:

 

Quando você tenta inserir um valor de: 123456789012.32 o banco de dados interpreta que são 14 posições, sendo que para aceitar você deverá ter um campo com tipo Decimal(14,2).

 

No seu caso, quando você diz que o campo será 8,2, você esta dizendo que serão aceitos oito números, e que destes oito, dois são decimais, restando então 6 posições para o valor inteiro.

 

Faça a alteração e tente a inserção novamente.

 

Espero ter lhe sido útil, grande abraço.

 

_ _

Fabiano Abreu

Papo Sql - Um blog com tutoriais, dicas e truques sobre SQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz decimal(15,2)

 

Coloquei esse número: 1234567.88

 

E deu erro:

 

Out of range value for column 'preco_imovel'at row 1

 

Parece que ele só aceita que o mesmo numero de caracters esteja em todos os camposa.

 

Se eu colocar : 123456.88. Aí, ele aceita.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poderia ser uma limitação da versão free do mysql server 6.0.0 talvez?

 

Só aceitar, no maximo, 6 casas antes do ponto, mesmo colcando, por exemplo: decimal(15,2)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.