这是请求:
SELECT id, city, commision FROM sellers
WHERE commision > 0.1;
这是输出:
id city Commission
'1', 'London', '0.12'
'2', 'San Jose', '0.13'
'3', 'New York', '0.1'
'4', 'London', '0.11'
' 7', '巴塞罗那', '0.15'
输出中有一行的列值commition等于0.1,尽管在WHERE我写的时候我只需要具有commition > 0.1.
键入commition- FLOAT。而且,有趣的是,其他数字没有观察到这一点。例如,请求时:
SELECT id, city, commision FROM sellers
WHERE commision > 0.12;
我们得到输出:
“7”、“巴塞罗那”、“0.15”、
“2”、“圣何塞”、“0.13”
也就是说,'1', 'London', '0.12'应该跳过具有列值的行。
本质上,浮点数(二进制表示,not
decimal)是这样计算的:在我们的例子(0.1)中,结果是这样的:
当然,结果是不准确的:
那么你在哪里存储这些数字呢?答案——
decimal。但是在这种情况下,会得到一个定点数,这会限制我们,但是这个数应该没有任何问题。在创建列代替类型时,您需要指定
DECIMAL(M, N),其中M点之前的数字数量,N- 之后。可以在此处找到有关该主题的更多信息。