sql语句 decimal(18,0)什么意思

不幸的是,您对decimal(1 8 ,0) 的SQL 描述非常冗长并且大部分是正确的。
但我们还是从另一方面来说吧。
当你这样写的时候,是不是就像在读课本一样? 😅
看,上周一位客户问我为什么他在使用小数(1 8 .0)保存工资单时遇到问题 - 他保存“1 5 000”没问题,但保存“1 5 000.01 ”时出现错误。
这次我告诉他:想想十进制数(1 8 .0)意味着什么?这是一个最多 1 8 位数字且没有小数位的纯整数。
当你保存工资单时,你应该保存小数,对吗?这下客户愣住了。

所以你看,仅仅说“可以存储1 2 3 4 5 6 7 8 9 01 2 3 4 5 6 7 8 ”有点不现实。
在实际场景中,如果要存储 ID 号,则可以使用十进制数(1 8 .0),因为 ID 号是纯 1 8 位数字。
如果您想存入金额,则必须使用小数 (1 0.2 ) 或小数 (1 8 .2 )。
不然怎么加0.01 呢?
另外,decimal类型确实比float和double更精确,值得称赞。
我以前就遇到过某个系统的陷阱。
那个用浮动数量存库存的,最后卖了1 00件,但还是显示有库存,因为电脑不擅长计算小数。
后来我用十进制数(1 0,2 )解决了这个问题。

你的信没有什么问题,只是太字面了。
如果你改成这样,客户可能会听得更清楚:
“嘿,十进制(1 8 ,0)只是意味着:给你一个1 8 个格子的大盒子,只能容纳整数,不能容纳小数点。
你需要存储很长的数字,比如身份证号码,这很好用。
如果你想省钱,你应该使用小数点,比如十进制(1 0,2 )。
记住,这是精确的,不像浮点数逗号,会导致计算错误。

无论如何,这一段应该写得专业,但你需要考虑受众是谁。

sql语句decimal(18,0)什么意思

Decimal是SQL中存储整数的特殊类型,总长度为1 8 位。
这1 8 位数字都没有小数位,都是整数。
它支持存储大整数,例如1 00000000000000000。

我查了Oracle文档,它说总长度是1 8 位。
由于小数位数为0,因此没有小数点,并且存储的所有数字都是整数。
如果你想存储小数位,它就不起作用。

该类型主要用于金融行业。
例如,在银行系统中盘点资金或在仓库中管理库存时,对数字准确性的要求特别高。
使用小数点存储不会像使用浮点数那样导致舍入错误。
例如,如果您在计算帐户时不能犯任何错误,则应该使用小数。

老实说,当我第一次使用它时,我不明白为什么会有这么多位。
后来在做一个涉及银行对接的项目时,我意识到准确性有多么重要。
我直接用int保存,后来发现数字太大会出问题,所以改用decimal解决了。