decimal类型对象里面定义什么类型_详解MySQL数据类型DECIMAL(N,M)中N和M分别表示的含义...

2023-11-02

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

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

CREATE TABLE `test_decimal` (

`id` int(11) NOT NULL,

`seller_cost` decimal(14,2) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8

起初,表中内容为空

mysql> select * from test_decimal;

Empty set (0.00 sec)

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

mysql> insert into test_decimal(id,seller_cost) values(1,12345678901234);

ERROR 1264 (22003): Out of range value for column 'seller_cost' at row 1

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

mysql> insert into test_decimal(id,seller_cost) values(1,123456789012);

Query OK, 1 row affected (0.00 sec)

查询表,发现插入的整数值末尾被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位,否则不能成功插入,会报超出范围的错误。

总结

以上就是本文关于详解MySQL数据类型DECIMAL(N,M)中N和M分别表示的含义的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:MySQL中or语句用法示例、简述Redis和MySQL的区别等,有什么问题可以随时留言,小编会及时回复大家的。感谢朋友们对本站的支持!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

decimal类型对象里面定义什么类型_详解MySQL数据类型DECIMAL(N,M)中N和M分别表示的含义... 的相关文章

  • XBOX怎么查保修期限

    网站 Microsoft 帐户 设备https account microsoft com devices fref home drawers devices manage devices refd account microsoft co
  • python实战爬取招聘网站职位数据

    大家都知道金三银四是每年的求职高峰期 是中国招聘市场中最热门的季节之一 这段时间内 许多公司会发布大量的招聘信息 吸引大批求职者前来应聘 同时 也有许多人选择这个时候跳槽 因为这个时候找到新工作的机会相对较大 python 疫情放开后感觉求
  • (websocket)协议中Ping Pong,Socket通讯ping pong(长连接),心跳包

    Socket读写数据 流Socket 数据包Socket 1 流套接字 SOCK STREAM 流套接字用于提供面向连接 可靠的数据传输服务 该服务将保证数据能够实现无差错 无重复发送 并按顺序接收 流套接字之所以能够实现可靠的数据服务 原
  • 华硕天选无法识别蓝牙

    系列文章目录 文章目录 系列文章目录 前言 一 解决 二 链接蓝牙 三 搜索蓝牙 前言 无法连接蓝牙 一 解决 电脑桌面右下角 点开 二 链接蓝牙 三 搜索蓝牙
  • sql中join与left-join图解区别

    t1表内容如下 t2表内容如下 下面来简述join和left join right join的区别 inner join select from t1 inner join t2 on t1 id t2 id 公共部分的数据才会被查询出来
  • matlab判断两个数据是否相等的相关问题

    在matlab中如何判断两个数据的值是否相等呢 我们都知道通常使用isequal 方法 调用方法如下 tf isequal A B 然而数据在什么情况下是相等的呢 我们看如下情况 x 1 38389652673674e 20 y 1 383
  • ubuntu 交叉编译qt 5.7 程序到 arm 开发板

    ubuntu 交叉编译qt 5 7 程序到 arm 开发板 平台 1 ubuntu 12 04 2 arm linux gcc 4 5 1 3 QT 5 7 4 开发板210 armcortex A8 一 概述 QT5的ARM移植及其中文显
  • 内存泄露、内存溢出以及解决方法

    本文转自 http blog csdn net cjf iceking article details 7552802 内存泄露是指程序在运行过程中动态申请的内存空间不再使用后没有及时释放 从而很可能导致应用程序内存无线增长 更广义的内存泄
  • 语义分割、实例分割和全景分割的区别

    之前看过一篇使用分割思想进行目标检测 所以这里补习下一些分割相关的基础知识 这里重点说下语义分割 实力分割和全景分割的区别 1 semantic segmentation 语义分割 通常意义上的目标分割指的就是语义分割 图像语义分割 简而言
  • 【计算机网络】TCP超时重传时间的选择

    由于TCP下层是互联网环境 发送的报文会经过一个高速率的局域网 也可能经过多个低速率的网络 并且每个IP报文所选择的路由器还可能不同 那么问题就来了 如果把超时重传的时间设置得太短 就会引起很多报文产生不必要的重传 但如果把超时重传的时间设
  • 一次性搞定分布式限流————手写分布式限流框架

    目录 一 目标和需求分析 二 初步设计 三 客户端的实现 1 限流器参数定义 1 限流规则定义 2 客户端配置定义 2 限流器实现 1 接口定义 2 限流器的抽象实现 2 访问策略实现 3 单机限流器的实现 4 分布式限流器的实现 3 分发
  • SpringCloud-学习笔记(五)nacos集群环境搭建

    参考视频 集群搭建步骤 搭建MySQL集群并初始化数据库表 下载解压nacos 修改集群配置 节点信息 数据库配置 分别启动多个nacos节点 nginx反向代理 安装数据库 官方的建议是使用MySQL组词给模式的高可用集群 这里为了方便演
  • web中异步和同步的理解

    普通的B S模式就是同步 而AJAX技术就是异步 当然XMLHttpReques有同步的选项 同步 提交请求 gt 等待服务器处理 gt 处理完毕返回 这个期间客户端浏览器不能干任何事 异步 请求通过事件触发 gt 服务器处理 这是浏览器仍
  • 欧拉路问题—详解

    先区分几个概念 欧拉路 从一个点S出发 不重不漏的经过每条边 允许重复经过一个点 最终去到另一个点T 的一条路径 欧拉回路 从一个点S出发 不重不漏的经过每条边 允许重复经过一个点 最终回到这个点S 的一条路径 欧拉图 存在欧拉回路的无向图
  • QQGuild删除

    整理C盘用户数据时发现了这玩意 输入路径 C Users Dell AppData Local Tencent 筛选最小输出文件大小 20 QQBrowser 大小 246 52 M QQGuild 大小 306 37 M 明明把Tence
  • encoder-decoder

    Encoder decoder框架 Encoder decoder框架最抽象的一种表示 即由一个句子生成另一个句子的通过处理模型 对于句子对
  • vulhub打靶第二周

    第二周 信息收集 主机发现 arping 和arp scan 都可以使用 arping 在大多Linux 发行版都默认包含 但是arping无法扫一个网段 可以用shell脚本补足这个缺陷 for i in seq 1 254 do sud
  • nginx 握手失败SSL_do_handshake() failed (SSL: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no share...

    SSL do handshake failed SSL error 1408A0C1 SSL routines SSL3 GET CLIENT HELLO no shared cipher 因为nginx不支持客户端的算法套件 1 可更新n
  • Python 数据采集-爬取学校官网新闻标题与链接(进阶)

    Python 爬虫爬取学校官网新闻标题与链接 进阶 前言 一 拼接路径 二 存储 三 读取翻页数据 四 完整代码展示 五 小结 前言 本文基于学校的课程内容进行总结 所爬取的数据均为学习使用 请勿用于其他用途 准备工作 爬取地址 https

随机推荐

  • mysql bitmap redis_Redis 中 BitMap 的使用场景

    BitMap 原本的含义是用一个比特位来映射某个元素的状态 由于一个比特位只能表示 0 和 1 两种状态 所以 BitMap 能映射的状态有限 但是使用比特位的优势是能大量的节省内存空间 在 Redis 中 可以把 Bitmaps 想象成一
  • C语言文件操作之fgets()

    来说一说fgets 函数 原型 char fgets char s int n FILE stream 参数 s 字符型指针 指向存储读入数据的缓冲区的地址 n 从流中读入n 1个字符 stream 指向读取的流 返回值 1 当n lt 0
  • 2023华为OD机试真题Python实现【食堂供餐/二分法】

    题目内容 某公司员工食堂以盒饭方式供餐 为将员工取餐排队时间降低为0 食堂的供餐速度必须要足够快 现在需要根据以往员工取餐的统计信息 计算出一个刚好能达成排队时间为0的最低供餐速度 即 食堂在每个单位时间内必须至少做出多少份盒饭才能满足要求
  • 使用easyExcel导入大批量数据

    常用来导入excel的工具有poi 但笔者实测中发现 poi导入的excel数据少于5000条时是没有任何问题的 当导入excel里的数据大于5000条时 内存会被占满 从而导致解析错误 导入失败 这种情况俗称 OOM Out Of Mem
  • 震撼!国产自研多环境开发软件 CEC-IDE 问世!遥遥领先!!

    程序员的成长之路 互联网 程序员 技术 资料共享 关注 阅读本文大概需要 2 8 分钟 来自 网络 侵删 震撼到了 厉害 继国产自研浏览器 国产自研操作系统 国产自研手机系统后的全新力作 国产自研 IDE 它就是 CEC IDE 一款由数字
  • Scanvenger游戏制作笔记(一)Unity3D状态机转换

    Scanvenger游戏制作笔记 一 Unity3D状态机转换 前言 一 打开Controller 二 选择 Parameters 创建新的trigger 三 选择状态转换线 四 返回到原状态 选择返回的剪头 系列链接 前言 本文章是我学习
  • 使用yum 源安装nginx

    执行以下命令 添加Nginx到yum源 sudo rpm Uvh http nginx org packages centos 7 noarch RPMS nginx release centos 7 0 el7 ngx noarch rp
  • 树模型-决策树

    树模型 1 决策树 ID3 C4 5 CART 2 随机森林RF 3 Adaboost 4 GBDT 5 XGboost 6 孤立森林 异常检测 一 决策树 决策树是一种基本的分类和回归方法 用于分类主要借助每一个叶子节点对应一种属性判定
  • torchtext 教程 超详细

    torchtext 教程超详细 https www jianshu com p da3a5d5ed2ba
  • 数字电路实验(02)小规模组合逻辑电路实验1:交通灯状态

    数字电路实验 02 小规模组合逻辑电路实验1 交通灯状态 2020 5 11 一 实验要求 1 1 实验目的 1 认识解决实际组合逻辑问题的一般方法和过程 2 熟悉基本逻辑门的使用 1 2 实验器材 1 2输入与门 2 3输入与门 3 4输
  • Java用类实现结构体的功能

    我们都知道C C 里面的结构体在储存数据的时候很方便 但是在Java中没有Struct 但是我们可以用类来实现Struct的功能 与Struct声明功能一样的类的定义 public class platform private int x
  • C++类模板特化全总结

    基础模板一 template
  • CTR预估的几种方式

    1 CTR预估 CTR预估是计算广告中最核心的算法之一 那么CTR预估是指什么呢 简单来说 CTR预估是对每次广告的点击情况做出预测 预测用户是点击还是不点击 具体定义可以参考 CTR CTR预估和很多因素相关 比如历史点击率 广告位置 时
  • 解决unity5.6之前打包的apk在android8.0真机上运行黑屏的bug

    我的项目使用unity5 4 1开发 在Android8 0的时候启动会出现黑屏 同时发现日志中有这一句日志Unable to query for permission Fragment null must be a public stat
  • Spring事务当中propagation=“REQUIRED“和PROPAGATION=“REQUIRES_NEW“的区别

    3 propagation REQUIRED 和PROPAGATION REQUIRES NEW 的区别 官方 PROPAGATION REQUIRED 支持当前事务 如果当前没有事务 就新建一个事务 这是最常见的选择 PROPAGATIO
  • Flink从入门到真香(17、使用flink table api 输出到文件和kafka)

    对于流式查询 需要声明如何在表和外部连接器之间进行转换与外部系统交换的消息类型 由更新模式 update model 指定 下面3种 能使用那种模式取决于输出的目标 比如如果输出到文件你就没法用更新和撤回模式 因为不知道 只能追加 但是如果
  • mybatis 注解的方式批量插入,更新数据

    一 当向数据表中插入一条数据时 一般先检查该数据是否已经存在 如果存在更新 不存在则新增 使用关键字 ON DUPLICATE KEY UPDATE zk device id为主键 model PushBindRecord 二 批量查询 使
  • JS——内部对象

    文章目录 1 Date 2 JSON 1 Date 基本使用 var now new Date now getFullYear 年 now getMonth 月 0 11月 now getDate 日 now getDay 星期几 now
  • Java九大内置对象

    Java九大内置对象 1 Request对象 该对象封装了用户提交的信息 通过调用该对象相应的方法可以获取封装的信息 即使用该对象可以获取用户提交的信息 当Request对象获取客户提交的汉字字符时 会出现乱码问题 必须进行特殊处理 首先
  • decimal类型对象里面定义什么类型_详解MySQL数据类型DECIMAL(N,M)中N和M分别表示的含义...

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