问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

【SQL】金额如果存在数据库中应该使用何种类型?

发布网友 发布时间:2022-04-24 03:12

我来回答

6个回答

热心网友 时间:2022-04-09 11:48

在工作中发现原本系统中金额类型(int 10,存入数据库时乘100)已经不能满足当前需求,需要重新修改类型。于是像技术总监发起两次审批,但都被驳回了。第一次金额类型为 DECIMAL(32,8) , 第二次类型是 DECIMAL(10,2),之后技术总监说,你第一次的类型可能是对的,于是小彭百思不得其解,引发以下的灵魂三问......

为什么系统期初设置金额时要用 int 10 类型?
为什么两次审批都被驳回?
为什么后来技术总监又说第一次的可能是对的?
简单思考过后:小彭,大胆的推测了第一个问题,可能是当初设计数据结构时,认为金额精确到分即可,所以默认乘100 (保留两位小数)。但金额最大为 9千万元,是否真的能符合要求,回头还得再问问技术总监。这时,小彭又想到两个问题:

既然是保留小数了,为什么还要用 INT 类型呢?
如果说 FLOAT和 DOUBLE类型可能会存在精度问题,又为什么不用 DECIMAL类型呢?
经过查阅博客之后:小大概想通了第二个问题,第一次被驳回的原因是:DECIMAL类型在数据库中是根据传入的数值来决定存储的字节长度的,32明显过长会导致磁盘空间的浪费。而第二次则是走了另外一个极端:原本长度为10已经快要满足不了需求的了,如果再修改为同样的长度意义不大,还会引起后续再次修改类型的情况。

又结合系统反思了一下:大概明白了第三个问题,至于金额的长度其实是没有没有一个具体的标准的,要根据具体业务情况,预估最大的金额上限,再决定具体长度。

意料之外的惊喜,在看书籍中意外的解决了第二组的两个问题。 由于CPU不支持对 DECIMAL 的 直接计算,所以在计算的过程中需要额外的空间及计算开销,导致性能过慢。还存在另外一种解决方案:使用 BIGINT 代替 DECIMAL,在计算时,可以乘或除以相应的倍数即可,来取代 DECIMAL 计算代价高的问题。

最后总结:

FLOAT和 DOUBLE类型会存在精度问题,是因为十进制0.1在电脑里用二进制是无法精确表示的。
DECIMAL类型在数据库中存储的字节长度计算公式:对decimal(M,D) ,如果M>D,长度为M+2,否则为D+2。
要根据具体业务情况,预估最大的金额上限,再决定具体长度。
DECIMAL 计算的过程中需要额外的空间及计算开销,性能低。

热心网友 时间:2022-04-09 13:06

一般用money或decimal或numeric,而不用float或double,因为容易出现"失真".

money货币数据存储的精确度为四位小数。可以存储在 money 数据类型中的值的范围是 -922,337,203,685,477.5808 至 +922,337,203,685,477.5807(需 8 个字节的存储空间)。

在 SQL Server中,numeric 数据类型等价于 decimal 数据类型。存储 decimal 或 numeric 数值所需的字节数取决于该数据的数字总数和小数点右边的小数位数。

热心网友 时间:2022-04-09 14:40

一般用money或decimal或numeric,而不用float或double,因为容易出现"失真".
money货币数据存储的精确度为四位小数。可以存储在 money 数据类型中的值的范围是 -922,337,203,685,477.5808 至 +922,337,203,685,477.5807(需 8 个字节的存储空间)。
在 SQL Server中,numeric 数据类型等价于 decimal 数据类型。存储 decimal 或 numeric 数值所需的字节数取决于该数据的数字总数和小数点右边的小数位数。

热心网友 时间:2022-04-09 16:32

int varchar 都可以 输出时做个格式化

热心网友 时间:2022-04-09 18:40

看你的精度了。一般money decimal 都可以

热心网友 时间:2022-04-09 21:04

number(p,s)
精确到小数点后面s位
【SQL】金额如果存在数据库中应该使用何种类型?

一般用money或decimal或numeric,而不用float或double,因为容易出现"失真".money货币数据存储的精确度为四位小数。可以存储在 money 数据类型中的值的范围是 -922,337,203,685,477.5808 至 +922,337,203,685,477.5807(需 8 个字节的存储空间)。在 SQL Server中,numeric 数据类型等价于 decimal ...

sql server 货币 字段 类型 一般用什么类型?

货币的字段类型一般有int,float,money/smallmoney,decimal/numberic。根据存储数据的精度不同选择:int只能存储整数的钱。money/smallmoney 数据类型精确到它们所代表的货币单位的万分之一 。decimal/numberic 可以自定义小数位和能存储的数据精度, 所以一般使用这种类型的人会多一些。float 对货币这种需要...

SQL 数据库的类型有哪些?

SQL 数据库分为:系统数据类型和用户自定义类型 系统数据类型:整形(int\smallint\tinyint)\浮点数据(real\decimal和numeric)\字符(char\varchar\nchar\nvarchar)\日期和时间数据类型(datetime\smalldatetime)\文本和图形数据类型(text\ntext\image)\货币数据类型(money\smallmoney)\位数据类型\二进制数据类型...

在SQL数据库中,设置了一个字段的类型为money,但是money类型数据保留的...

1、直接型,通过ToString()函数直接格式化。例如把money = 12345.67 格式成 money = 12,345.67。代码如下:string _money = moeny.ToString("N")或者string _moeny = money.ToString("#,###.00")2、本地化型,通过CultureInfo类,根据指定的文化进行格式化,同样的,代码如下:double money = 1...

sql数据库都有哪几种数据类型?常用都有哪几种?用select语句查询的时 ...

select语句数值用引号,字段名,表名等对象用括号,数据类型有char,int,double, float,decimal,nchar,varchar,text,nvarchar,常用的有int,float,varchar,text

sql中存储较大的数据用什么数据类型?或者存储较大的数据 怎么存储

整数用这个:int 整型 int 数据类型可以存储从- 231(-2147483648)到231 (2147483 647)之间的整数。存储到数据库的几乎所有数值型的数据都可以用这种数据类型。这种数据类型在数据库里占用4个字节 带精度的用这个:decimal 精确数值型 decimal 数据类型能用来存储从-1038-1到1038-1的固定精度和...

sql 中的数据类型有那些?请讲明白些

数据类型 在Microsoft® SQL Server™ 中,每个列、局部变量、表达式和参数都有一个相关的数据类型,这是指定对象可持有的数据类型(整型、字符、money 等等)的特性。SQL Server 提供系统数据类型集,定义了可与 SQL Server 一起使用的所有数据类型。下面列出系统提供的数据类型集。 可以定义用户定义的数据类型,其是...

sql数据类型有什么用sql数据类型有什么用途

各种数据类型的sql含义bitintegerbit数据类型为integer,其值只能为0、1或空。此数据类型用于存储只有两个可能值的数据,如Yes或No、True或False、on或Offintintegerint数据类型可以存储从-231(-2147483648)到231(2147483647)的整数。几乎所有存储在数据库中的数字数据都可以使用这种数据类型。这种数据类型在数据库中占用4...

SQL数据库中那个类型可以存储负数,比如说存储-50? 如果不能存储。用...

数据库中一般的数字类型都可以存储负数,如int,numeric,decimal等。工具:sqlserver 2008 R2 步骤:1、以int类型为例,首先创建一个表:2、在表中分别插入正数、负数和零。3、执行后结果:大型文本数据可以采用文本或图形二进制的数据类型:1、TEXT TEXT数据类型用于存储大量文本数据,其容量理论上为1 ...

mysql数据库中有几种数据类型

如果你需要存储比这还大的金额,你可以使用NUMERIC型数据。SMALLMONEY型数据只能存储从-214,748.3648到214,748.3647 的钱数。同样,如果可以的话,你应该用SMALLMONEY型来代替MONEY型数据,以节省空间。MySQL数据类型之四逻辑型 BIT 如果你使用复选框( CHECKBOX)从网页中搜集信息,你可以把此信息存储...

金额数据库用什么类型 数据库中存储金额用什么 数据库人数用什么类型 数据库百分比数据类型 数据库钱用什么类型 如何建立数据库 怎样对数据库的数据进行统计 数据库金额float 数据库表怎么输入数据
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
考研初试前需要做哪些准备? 考研前的准备工作都有什么? 金山毒霸如何更新其他软件啊 ...为了防止碎末掉到脸上影响妆容,用的贴在眼睛部位的东西 叫什么... 三与四加还六出打一准确生肖 二加六数大不同是什么意思 如何算命——基础篇 系统架构设计师和分析师区别 系统架构设计师和分析师区别是什么 废旧蜂窝铝板如何回收再利用? 下巴跌伤之后,想趁机做垫下巴整形手术,也可达脸部黄金比例? 大家好,请问一下mysql的无符号字段类型是不是只能存储正数?存储人民... mysql金额用什么类型 mysql 存储价格用什么数据类型好? MySQL数据库存储价格金额用什么数据类型好 mysql 金额用什么类型 mysql 存储金额类型,用什么数据类型比较可靠,一般企业数据用什么数据... 橡胶制品中加入炭黑的目的是什么? 炭黑和焦炭什么区别 碳黑有什么用 北京的催收电话010-63923333是西城的号吗? 0106744北京催款 合法吗 美团有北京的催收嘛 炭黑的化学成分是什么? 北京话里的“碎催”是什么意思?? 焦炭和炭黑有什么区别 010是北京哪里的催收 目前北京的债务催收公司有没有可靠的? 高耐磨炭黑对橡胶物理机械性能有什么影响 与炭黑相比,白炭黑补强的胶料哪些性能更好,为什么? 北京催收公司电话 mysql设计数据库钱用什么字段 mysql里记录货币用什么字段类型好 mysql 建表时的价格用什么类型定义? mysql里面如何存储金钱类型? mysql 金额 单价 小数2位 用int 还是decimal 关于MySQL中对于金额范围的查询 银行中mysql数字转成金额 mysql中要存储小数用什么类型数据好? 在一个程序中金额类型在sqlserver2005中定义成decimal合适还是money合适,或者其他的数据类型。为什么? 蚂蚁森林怎么领皮肤 2022蚂蚁森林山桃树多久一次? 蚂蚁森林皮肤有种黄皮卷的是什么树 蚂蚁森林我种了一颗冷杉皮肤不见了怎么找回? 蚂蚁森林合种能解锁皮肤吗 蚂蚁森林出过几款松树皮肤 蚂蚁森林初级皮肤怎么升级 蚂蚁森林新装扮怎么得 蜂蜜全部变成了白色的固体,应该如何食用 蜂蜜变成白色膏状怎么弄? 蜂蜜变成了粘稠坨状物什么原因?急求详细解答!