Eu sei que o SQL 92 é o padrão antigo, mas tenho certeza que isso não é alterado nas versões mais recentes do padrão SQL.
SQL 92 define
A pergunta é:
0.1
e 0.2
na consulta SELECT 0.1 + 0.2
aproximado ou é exato? A resposta é:você não sabe também o banco de dados não pode saber.
Assim, o banco de dados executará a implementação definida para os mecanismos MySQL e MariaDB, que deve ser tratado como
DECIMAL(1,1)
tipos de dados Por que a resposta de Nick retorna os valores corretos ou esperados com uma definição de tabela
O SQL 92 também define
O que Nick fez definindo o tipo de dados na tabela.
Editei esta resposta porque encontrei algo no manual do MySQL hoje.
A pergunta
SELECT (0.1 + 0.2) = 0.3
Resultados em
1
no MySQL, o que significa que o MySQL usa cálculo numérico exato e usa Matemática de precisão
sempre que possível. Então o MySQL sabe que 0.1
, 0.2
e 0.3
são tipos de dados exatos aqui e precisam calcular exatamente, como eu esperava antes desta edição. Significado da consulta
SELECT (0.1 + 0.2) = 0.3
vai correr sob o capô mais ou menos como
SELECT CAST((0.1 + 0.2) AS DECIMAL(1, 1)) = CAST((0.3) AS DECIMAL(1, 1));