decimal(numeric ) 同义,用于精确存储数值 。

decimal 数据类型最多可存储 38 个数字,所有数字都能够放到小数点的右边。decimal 数据类型存储了一个准确(精确)的数字表达法;不存储值的近似值。

定义 decimal 的列、变量和参数的两种特性如下:

p 小数点左边和右边数字之和,不包括小数点。如 123.45,则 p=5,s=2。

指定精度或对象能够控制的数字个数。

s

指定可放到小数点右边的小数位数或数字个数。

p 和 s 必须遵守以下规则:0 <= s <= p <= 38。

numeric 和 decimal 数据类型的默认最大精度值是 38。在 Transact-SQL 中,numeric 与 decimal

数据类型在功能上等效。

当数据值一定要按照指定精确存储时,可以用带有小数的 decimal 数据类型来存储数字。

转换 decimal 和 numeric 数据

对于 decimal 和 numeric 数据类型,Microsoft® SQL Server™

将精度和小数位数的每个特定组合看作是不同的数据类型。例如,decimal(5,5) 和 decimal(5,0) 被当作不同的数据类型。

在 Transact-SQL 语句中,带有小数点的常量自动转换为 numeric 数据值,且必然使用最小的精度和小数位数。例如,常量 12.345

被转换为 numeric 值,其精度为 5,小数位为 3。

从 decimal 或 numeric 向 float 或 real 转换会导致精度损失。从

int、smallint、tinyint、float、real、money 或 smallmoney 向 decimal 或 numeric

转换会导致溢出。

默认情况下,在将数字转换为较低精度和小数位数的 decimal 或 numeric 值时,SQL Server 使用舍入法。然而,如果 SET

ARITHABORT 选项为 ON,当发生溢出时,SQL Server 会出现错误。若仅损失精度和小数位数,则不会产生错误。

笔者,最近在研究mysql的decimal数据类型,现把数据实验结果公布如下

数据库版本:Server version:

5.0.45 Source distribution

1、创建表结构

代码如下

复制代码

create table ta (a float,b decimal(10,5));

2、插入数据

代码如下

复制代码

insert into ta (a,b)

values(1,12345.123423);

实际插入的b列数据为:12345.12342

代码如下

复制代码

insert into ta (a,b) values(1,123456.1234);

实际插入的b列数据为:99999.99999

结论:decimal数据类型,

1、当插入的整数部分的值超过了其表示范围后就直接忽略了小数部分的值,并以最大值填充。

2、当整数部分合法,小数部分多余的位数,直接截断。

二、numeric(M,D)

numeric数字类型和decimal数字类型的一样的

修改a列字段类型: alter table ta change a a numeric(10,5);

代码如下

复制代码

show create table ta;

| ta    | CREATE TABLE `ta` (

`a`

decimal(10,5) default NULL,

`b` decimal(10,5) default NULL

) ENGINE=MyISAM

DEFAULT CHARSET=utf8 |

可见,在myslq5.0中,numeric和decimal数据类型是一致的,两者的精度均准确为M位数字

原文:http://www.cnblogs.com/alibai/p/4125138.html

mysql numeric 区别_Mysql中NUMERIC和DECIMAL类型区别比较相关推荐

  1. mysql 金额_Mysql中金额使用DECIMAL类型

    MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形 ...

  2. mysql ifnull 别名_mysql中IFNULL,IF,CASE的区别介绍

    mysql中IFNULL,IF,CASE的区别介绍 发布时间:2018-04-15 09:54:57 假设有一数据表的状态字段设计为varchar类型,有以下值:NULL,pending,pendin ...

  3. mysql数据库blob区别_MySQL中TEXT与BLOB字段类型的区别

    在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程序的博主不知道改为自己的博客正文字段选择TEXT还是BLOB类型. 下面给出几点区别: 一.主要差别 TEXT ...

  4. mysql blob 字段_MySQL中TEXT与BLOB字段类型的区别

    在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程序的博主不知道改为自己的博客正文字段选择TEXT还是BLOB类型. 下面给出几点区别: 一.主要差别 TEXT ...

  5. ajax的post跟get区别,Ajax中post与get的区别

    get和post都是向服务器发送一种请求,只是发送机制不同 . 1. GET可以通过在请求URL上添加请求参数, 而POST请求则是作为HTTP消息的实体内容发送给WEB服务器. 2. get方式请求 ...

  6. mysql float 怎么设置长度_MySQL中float double decimal区别总结

    作者:极客小俊 一个专注于web技术的80后 你不用拼过聪明人,你只需要拼过那些懒人 你就一定会超越大部分人! 下表中规划了每个浮点类型的存储大小和范围: 类型大小范围(有符号)范围(无符号)用途fl ...

  7. mysql int(3)_MySQL中int(11)与int(3)的区别_MySQL

    11.2. 数值类型 MySQL支持所有标准SQL数值数据类型.这些类型包括严格数值数据类型(INTEGER.SMALLINT.DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT.RE ...

  8. mysql两个字段相减_MySQL 中NULL和空值的区别?

    作为后台开发,在日常工作中如果要接触Mysql数据库,那么不可避免会遇到Mysql中的NULL和空值.那你知道它们有什么区别吗? 学不动了,也不想知道它们有什么区别.大兄弟,不行啊,要面试! 前些天我 ...

  9. mysql自定义数据类型_MySQL中的数据类型

    一.MySQL中的数值类型分类 MySQL中数值类型主要有三类:数字类型,字符串类型,时间类型. 1.数字类型 1.1整数 tinyint  1字节 smallint               2字 ...

最新文章

  1. html获取文本框的值,如何获取输入框的内容
  2. java enum 返回list_java – 组合枚举并使用getter返回指定的枚举
  3. Gabor滤波器的特征提取C++实现
  4. Coding: 整数反转
  5. [高并发]Java高并发编程系列开山篇--线程实现
  6. 基于Python+Django+Mysql的图书管理系统
  7. 关于u-boot中的.balignl 16,0xdeadbeef的理解
  8. Hyper-V 3.0网络虚拟化PART 4:私有交换机
  9. commons fileupload的DiskFileItemFactory
  10. Visual C++ 时尚编程百例013(CRect类)
  11. LEGION联想Y7000P Ubuntu18.04的无线网卡驱动安装
  12. 白细胞直方图C语言,白细胞三分群及其直方图
  13. MATLAB fig文件批量转换为jpg格式
  14. 【小程序源码】简洁界面清爽让人非常舒服的一款短视频去印自带接口
  15. Hibernate 列映射 – 解决其他类型映射命名冲突
  16. 第十二届全国大学生信息安全竞赛-RE部分WP(目前前两题,待更)
  17. springboot导入后Spring包飘红问题解决
  18. 在WORD表格中如何实现加法?
  19. 随机变量与随机过程详解
  20. Discuz!uc.key泄露导致代码注入漏洞uc.php的解决方法

热门文章

  1. superoj738 诸葛亮
  2. 介绍一个牛逼的Github项目
  3. python股票接口_在Python中使用股票接口
  4. 2020-02-23
  5. 钣金展开更自由了? SOLIDWORKS 2022 新功能
  6. 德州学院大学计算机,德州学院 计算机系 李天志老师简介 联系方式 手机电话 邮箱...
  7. swoole开发多人在线游戏新手教程
  8. 通过阿里云API查询账户余额
  9. FC炸弹人 java源码下载
  10. 产品经理与工程师的换位思考