是float(0)SQL数据类型有效吗?

时间:2011-04-26 17:39:30

标签: sql

我认为浮动(n)中n的最小值必须为1。

我没见过" float(0)"之前的数据类型,所以我想知道它是否有效。

4 个答案:

答案 0 :(得分:5)

如果没有指定实现,这个问题可能不是非常有意义。

在SQL Server中,例如float's minimum precision is 1

  

其中n是位数   用于存储的尾数   浮点数用科学计数法表示   因此,决定了精度   和存储大小。如果指定了n,   必须是1到53之间的值。 n的默认值为53。

另一方面,在MySQL中,float(0)是有效的语法,但听起来并不十分有意义。 From the specification

  

MySQL也支持这个可选项   精度规格,但   精度值仅用于   确定存储大小。 精确度   从0到23导致四个字节   单精度FLOAT柱。一个   从24到53的精度导致   八字节双精度DOUBLE   列。

Oracle has a FLOAT datatype,但它似乎只是NUMBER的别名,其最小精度为1:

  

NUMBER数据类型的子类型   有精度p。 FLOAT值是   内部表示为NUMBER。   精度p的范围为1到126个二进制数字。 FLOAT值   需要1到22个字节。

因此,您可以看到答案是高度针对特定于实现的。我不确定ANSI SQL标准是否指定了FLOAT精度。他们可能没有。

答案 1 :(得分:1)

它无效,因为您需要声明数据类型的大小。显然不能为零。

答案 2 :(得分:1)

Oracle和MS SQL都声明float精度的最小值为1。

这是有道理的:它是您希望浮点数支持的小数位数。零小数位将意味着没有价值。

答案 3 :(得分:0)

根据这个:

http://msdn.microsoft.com/en-us/library/ms173773.aspx

它无效,至少在SQL Server上是这样。 0表示零位,并且很难将数据压缩到没有存储空间的东西。