我有一个列名为cost,它的数据类型为decimal(20,8),当我尝试插入数据时,它会附加额外的000s。
例如,如果我在插入时插入10.11,它将被存储为10.11000000
我想做的是只插入插入的小数点,无论它是10.11,然后按原样存储,如果是10.0012,则按原样存储。
我如何使用MySql和NodeJS实现这一点?
我见过cast()和其他函数,但我不希望它处于查询级别。
在表或DB结构端有什么可以做的吗?
提前谢谢。
发布于 2020-01-07 20:03:42
基本上你不能,我将在下面解释原因:
您已经为此特定列设置了decimal(20,8)数据类型。因此,从二进制的角度来看,该列将存储20位。然后是8位。您将输入的所有数据都将具有该特定长度。值不是000000000010.11000000值的原因是因为0在数字之前从不显示,然而,如果我们必须查看值在内存中占用的位数,这将是它的值。decimal(20,8)的数据类型总共可以接受以下范围的数字;从:-999999999999.99999999到999999999999.99999999,这意味着总共可以有20位数字,其中8位在小数点之后。
总而言之,数据库中的值将始终以该格式保存。如果您希望修改前端以删除尾随的零,则需要在node.js中执行此操作。
发布于 2020-01-07 19:12:12
将值存储在数据库中与显示值时使用的格式是不同的。当您有一个数据类型为decimal(20,8)的列时,它将允许最多8个小数。当您存储值10.11、10.110、10.1100或10.11000000时,它们都保存为相同的10.11值。
当您从数据库(命令行客户端,任何应用程序)读取值时,该应用程序确定如何显示该值。例如,命令行客户端选择显示所有小数。
https://stackoverflow.com/questions/59626958
复制相似问题