O bug nosso de cada dia
por Walter Cruz on 21/09/2007
in MySQL, PostgreSQL
MySQL
mysql> select cast(85 as decimal(3,2)); +--------------------------+ | cast(85 as decimal(3,2)) | +--------------------------+ | 9.99 | +--------------------------+ 1 row in set, 1 warning (0.00 sec)
PostgreSQL
template1=# select cast(85 as decimal(3,2)); LOG: statement: select cast(85 as decimal(3,2)); ERROR: numeric field overflow DETAIL: The absolute value is greater than or equal to 10^1 for field with precision 3, scale 2.
O Mysql sempre silenciando os erros... ![]()
Subscribe: 



template1=# select cast(85 as decimal(3,2));
LOG: statement: select cast(82 as decimal(3,2));
Mas era de 85 ou de 82? O LOG apontou 82...
Tá bom, você me pegou: eu fiz o teste no postgres com 82, depois eu vi que devia ser 85, mas esqueci de mudar a linha de baixo :D
Tem coisas *BUM* que só o MySQL faz por você :P
MS-SQL server (7.0, 2000 e 2005)
Server: Msg 8115, Level 16, State 8, Line 1
Arithmetic overflow error converting numeric to data type numeric.
Agora fica a pergunta: Pq acontece isso, alguém sabe ?
Oi Luciano! Na verdade, o campo deveria ser decimal (4,2). O primeiro número, antes da virgula, indica o total de números permitido no campo, sacou?
Ok, saquei sim! Valeu. :)