Carcleo 4 Denunciar post Postado Maio 15, 2012 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
Fabiano Abreu 22 Denunciar post Postado Maio 16, 2012 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
Carcleo 4 Denunciar post Postado Maio 16, 2012 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
Henrique Barcelos 290 Denunciar post Postado Maio 16, 2012 Está com prazo apertado? Sugiro alterar o tipo para varchar e armazenas os números como strings... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Maio 16, 2012 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
Fabiano Abreu 22 Denunciar post Postado Maio 16, 2012 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
Carcleo 4 Denunciar post Postado Maio 16, 2012 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
Carcleo 4 Denunciar post Postado Maio 17, 2012 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