Mysql M,D在十进制(M,D)中到底是什么意思?

Mysql M,D在十进制(M,D)中到底是什么意思?,mysql,decimal,Mysql,Decimal,有人知道这件事吗? 十进制列的声明语法为DECIMAL(M,D)。MySQL 5.1中参数的值范围如下: M是最大位数(精度)。它的范围是1到65。(MySQL的旧版本允许范围为1到254。) D是小数点(刻度)右侧的位数。其范围为0到30,且不得大于M [注意:上面的链接已更新为指向MySQL 5.7文档,但该文本引用了MySQL 5.1文档。]如下所示: M是最大位数(数字) 精度)。它的范围是1到65。 (MySQL的旧版本允许 范围为1到254。) D是右边的位数 小数点的小数点(刻

有人知道这件事吗?

十进制列的声明语法为DECIMAL(M,D)。MySQL 5.1中参数的值范围如下:

  • M是最大位数(精度)。它的范围是1到65。(MySQL的旧版本允许范围为1到254。)
  • D是小数点(刻度)右侧的位数。其范围为0到30,且不得大于M
[注意:上面的链接已更新为指向MySQL 5.7文档,但该文本引用了MySQL 5.1文档。]

如下所示:

M是最大位数(数字) 精度)。它的范围是1到65。 (MySQL的旧版本允许 范围为1到254。)

D是右边的位数 小数点的小数点(刻度)。信息技术 范围为0到30,并且必须为否 大于米

因此,M代表最大值(总位数),D代表小数点(小数点右边的位数)。

十进制列的声明语法仍为十进制(M,D),尽管参数的值范围有所更改:

  • M是最大位数(精度)。它的范围是1到65。这可能会导致旧应用程序不兼容,因为MySQL的早期版本允许1到254的范围。(从MySQL 5.0.6开始,65位的精度实际适用。从5.0.3到5.0.5,精度为64位。)

  • D是小数点(刻度)右侧的位数。其范围为0到30,且不得大于M


非常有用的解释,谢谢你打破了M和D的关系。我很难从文档中找到它。文档中还指出,
DECIMAL(M)等同于DECIMAL(M,0)。类似地,DECIMAL语法相当于DECIMAL(M,0),其中允许实现决定M的值。MySQL支持这两种不同形式的DECIMAL语法。
这是否意味着
DECIMAL(M)
将根据需要应用尽可能多的小数点(最多30个)?文档中还说明了
DECIMAL语法(M) 等价于十进制(M,0)。同样,语法DECIMAL等价于十进制(M,0),其中允许实现决定M的值。MySQL支持这两种不同形式的十进制语法。
这是否意味着
十进制(M)
将应用尽可能多的小数点(最多30个)根据需要???@Anthony:不。十进制(M)不允许任何小数位数。正如8.0版文档所述(就在您引用的部分之后):
如果刻度为0,则十进制值不包含小数点或小数部分。
好的,是的,我运行了一些测试,您是对的。但是,文档中的实现究竟意味着什么,可以决定M的值???@Anthony:在标准SQL中,您在开始时截断的部分告诉我们t指的是SQL标准。它的意思是,例如,MySQL可能会为M选择一个默认值,Oracle可能会选择一个不同的值,PostgreSQL可能会选择一个不同的值,等等。对于MySQL,v8.0文档声明,
M的默认值是10。
所以,
十进制
意味着
十进制(10,0)
。文档中还指出,
DECIMAL(M)等同于DECIMAL(M,0)。同样,DECIMAL语法等同于DECIMAL(M,0),其中允许实现决定M的值。MySQL支持这两种不同形式的十进制语法。
这是否意味着
DECIMAL(M)
将根据需要应用尽可能多的小数点(最多30)???