mysql decimal 空,MySQL DECIMAL数据类型

mysql decimal 空,MySQL DECIMAL数据类型同事问MySQL数据类型DECIMAL(N,M)中N和M分别表示什么含义,M不用说,显然是小数点后的小数位数,但这个N究竟是小数点之前的最大位数,还是加上小数部分后的最大位数?这个还真记不清了。于是乎,创建测试表验证了一番,结果如下:测试表,seller_cost字段定义为decimal(14,2)CREATETABLE`test_decimal`(`id`int(11)NOTNULL,`sell…

大家好,又见面了,我是你们的朋友全栈君。

同事问MySQL数据类型DECIMAL(N,M)中N和M分别表示什么含义,M不用说,显然是小数点后的小数位数,但这个N究竟是小数点之前的最大位数,还是加上小数部分后的最大位数?这个还真记不清了。于是乎,创建测试表验证了一番,结果如下:

测试表,seller_cost字段定义为decimal(14,2)

CREATETABLE`test_decimal`(`id`int(11)NOTNULL,`seller_cost`decimal(14,2)DEFAULTNULL) ENGINE=InnoDBDEFAULTCHARSET=utf8

起初,表中内容为空

mysql>select*fromtest_decimal;Emptyset(0.00sec)

插入整数部分长度为14的数字,报超出列范围的错误

mysql> insertintotest_decimal(id,seller_cost) values(1,12345678901234);ERROR1264(22003): Outofrange valueforcolumn’seller_cost’ at row 1

插入整数部分长度为12的数字,可以正确插入

mysql> insert intotest_decimal(id,seller_cost)values(1,123456789012);Query OK, 1 row affected (0.00sec)

查询表,发现插入的整数值末尾被mysql补了两位小数“.00”

mysql> select * from test_decimal;

+—-+—————–+| id | seller_cost    |

+—-+—————–+|  1 | 123456789012.00 |

+—-+—————–+1 row in set (0.00 sec)

继续插入整数部分12位,小数部分5位的数字,可以成功插入,但是有警告,警告表明小数部分发生了截断,被截取成了两位小数

mysql> insert into test_decimal(id,seller_cost) values(1,123456789012.12345);Query OK, 1 row affected, 1 warning (0.00 sec)mysql> show warnings;

+——-+——+————————————————–+| Level | Code | Message                                          |

+——-+——+————————————————–+| Note  | 1265 | Data truncated for column ‘seller_cost’ at row 1 |

+——-+——+————————————————–+1 row in set (0.00 sec)mysql> select * from test_decimal;

+—-+—————–+| id | seller_cost    |

+—-+—————–+|  1 | 123456789012.00 ||  1 | 123456789012.12 |

+—-+—————–+2 rows in set (0.00 sec)

缩小整数部分的长度为2,小数部分的长度继续保持为5,可以成功插入,但小数部分被截断为两位。

mysql> insert into test_decimal(id,seller_cost) values(1,12.12345);Query OK, 1 row affected, 1 warning (0.00 sec)mysql> show warnings;

+——-+——+————————————————–+| Level | Code | Message                                          |

+——-+——+————————————————–+| Note  | 1265 | Data truncated for column ‘seller_cost’ at row 1 |

+——-+——+————————————————–+1 row in set (0.00 sec)mysql> select * from test_decimal;

+—-+—————–+| id | seller_cost    |

+—-+—————–+|  1 | 123456789012.00 ||  1 | 123456789012.12 ||  1 |          12.12 |

+—-+—————–+3 rows in set (0.00 sec)

继续插入一个小数部分不足两位的数字,可正确插入,且小数部分被自动补全到两位。

mysql> insert into test_decimal(id,seller_cost) values(1,12.1);Query OK, 1 row affected (0.00 sec)mysql> select * from test_decimal;

+—-+—————–+| id | seller_cost    |

+—-+—————–+|  1 | 123456789012.00 ||  1 | 123456789012.12 ||  1 |          12.12 ||  1 |          12.10 |

+—-+—————–+4 rows in set (0.00 sec)

综上所述,DECIMAL(N,M)中M值的是小数部分的位数,若插入的值未指定小数部分或者小数部分不足M位则会自动补到M位小数,若插入的值小数部分超过了M为则会发生截断,截取前M位小数。N值得是整数部分加小数部分的总长度,也即插入的数字整数部分不能超过N-M位,否则不能成功插入,会报超出范围的错误。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160873.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • matlab支持向量回归,支持向量回归 MATLAB代码

    matlab支持向量回归,支持向量回归 MATLAB代码支持向量回归MATLAB代码(2013-05-3116:30:35)标签:教育支持向量机和神经网络都可以用来做非线性回归拟合,但它们的原理是不相同的,支持向量机基于结构风险最小化理论,普遍认为其泛化能力要比神经网络的强。大量仿真证实,支持向量机的泛化能力强于神经网络,而且能避免神经网络的固有缺陷——训练结果不稳定。本源码可以用于线性回归、非线性回归、非线性函数拟合、数据建模、预测、分类等多种应…

    2022年6月6日
    95
  • java取整和java四舍五入方法

    java取整和java四舍五入方法doublei=2,j=2.1,k=2.5,m=2.9;   System.out.println(“舍掉小数取整:Math.floor(2)=”+(int)Math.floor(i));   System.out.println(“舍掉小数取整:Math.floor(2.1)=”+(int)Math.floor(j));   System.out.println

    2022年5月21日
    48
  • 2020年前端面试题及答案_结构化面试题库及答案

    2020年前端面试题及答案_结构化面试题库及答案1、javascript基本数据类型?string、number、null、underfined、booleanobject是所有对象的父对象。2、浅谈javascript中变量和函数声明的提升?变量和函数声明的提升会被提升到最顶部去执行;函数的提升高于变量的提升;如果在函数内部用var声明了与外部相同的变量,则不向下寻找;匿名函数不会被提升;不同块中互不影响。3、什么是闭包?闭包有什么特性?闭包就是能够读取其他函数内部变量的函数。闭包的特性:函数内部可以嵌套函数;内部函数可以直接

    2022年8月27日
    7
  • latex 希腊字母输入「建议收藏」

    latex 希腊字母输入「建议收藏」数学公式离不开希腊字母,以下列出了LaTex中产生希腊字母的控制命令:  \alpha产生字符α;\beta产生字符β;\gamma产生字符γ;\delta产生字符δ;\epsilon产生字符ε;\zeta产生字符ζ;\eta产生字符η;\theta产生字符9;\iota产生字符ιt;\kappa产生字符κ;\1ambda产生字符λ;\mu产生字符μ;\xi产生字符ξ:\nu产生字符ν

    2022年10月13日
    4
  • 配置本地DNS服务器地址「建议收藏」

    配置本地DNS服务器地址「建议收藏」PC端使用公共DNSWindows系统1.在电脑右下角的网络图标上单击鼠标右键可以看到”打开网络和共享中心”选项,点击进入设置2.点击左侧的”更改适配器设置”3.在选中的网络连接上单击鼠标右键,选择”属性”4.单击”网络”选项卡。在”此连接使用下列项目”下,选中”Internet协议版本4(TCP/IPv4)”,然后点击”属性”,或者直接双击”Internet协议版本4(TCP/IPv4)”5.勾选”使用下面的DNS服务地址”,然后在”首选DNS

    2022年5月7日
    252
  • 搏一搏 单车变摩托,是时候捣鼓一下家中的小米电视机啦。[通俗易懂]

    搏一搏 单车变摩托,是时候捣鼓一下家中的小米电视机啦。[通俗易懂]事因因为家中有一台小米电视机,但是平时使用起来体验很差(1G内存,8G存储,CPU型号CortexA534核心1.5GHz),如今视频平台很多,Bilibili、爱奇艺、优酷、腾讯视频、芒果TV等平台。很多视频通过小米电视找不到,一部分原因是小米电视机的界面太炫丽,导致家中老人不太会操作,就是我用起来都觉得麻烦。想了一下,实在不行就干脆换系统。后来看到一些文章,可以更换界面,卸载一些不用的软件。当贝桌面,体验了一下。装完后,发现还不错,接近手机清爽的界面。装完主界面如下,系统自带的一些软件

    2022年6月27日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号