Sql 用点替换逗号将值四舍五入并删除小数
我想把逗号改成点。在具有值的行中,但执行此操作时,该值仅舍入两位小数 因此值[LineAmount]通常返回,例如:1389344 但是,在执行REPLACE[LineAmount]、、、、、时,该值将更改为1389.34 只有当值有3位小数(2或1)时,才会发生这种情况,因为替换操作正确 我错过了什么?在替换之前,我尝试将值转换为varchar或decimal,但同样的情况也发生了 我只需要把逗号改成一个点,别的什么都不需要 提前谢谢。真正的问题有两个方面: 您认为数字数据类型具有格式数据;他们没有。 您使用的是浮点数据类型,当它失去精度时,您会感到不安,尽管当您将值定义为浮点时,您说您对这种行为感到满意。 因此,解决方案很简单,使用十进制/数字数据类型存储数据,因此不会出现舍入问题。然后,如果需要对值进行格式化,请在表示层而不是RDBMS中进行格式化。替换{Numerical Data Type},“,”,“.”不会做任何有意义的事情,因为数值数据类型不是字符串;他们不像他们那样工作Sql 用点替换逗号将值四舍五入并删除小数,sql,sql-server,sql-server-2016,Sql,Sql Server,Sql Server 2016,我想把逗号改成点。在具有值的行中,但执行此操作时,该值仅舍入两位小数 因此值[LineAmount]通常返回,例如:1389344 但是,在执行REPLACE[LineAmount]、、、、、时,该值将更改为1389.34 只有当值有3位小数(2或1)时,才会发生这种情况,因为替换操作正确 我错过了什么?在替换之前,我尝试将值转换为varchar或decimal,但同样的情况也发生了 我只需要把逗号改成一个点,别的什么都不需要 提前谢谢。真正的问题有两个方面: 您认为数字数据类型具有格式数据;他
如何在表示层中实现格式是一个完全不同的问题,因为这取决于用于构建所述表示层的工具。Pust a full。我不能重复你的问题。然而,真正的问题似乎是将数字数据存储为字符串。列数据类型?@jarlh Valid question。猜测列的数据类型是decimalx,2。猜测列的数据类型是decimalx,2如果是@Dr.Casual,它永远不会有值“1389344”。浮点值没有逗号;这是你的第一个问题。替换{FloatValue},,,,,,,,,,,将不会做任何有意义的事情。接下来,float是一种不精确的数据类型,所以您实际上已经声明了您对使用该类型导致的数据丢失感到满意。2节课;1数字数据类型没有格式,因此不能用句点替换逗号。2.如果您想要精确的值,并且不想遇到这样的舍入问题,请不要使用float。问题是此数据库非常旧,不是我设置的,因此现在无法更改数据类型flotat。这就是为什么我一直在寻找一个解决方案来实现它。如果SQL Server不能为我做到这一点,我会像你说的那样尝试在表示层中使用。但这不会改变我的答案,@Nanaki。第1点仍然有效,数字数据没有格式,因此替换逗号毫无意义;可能我只是不明白,因为我不是SQL专家,但将其更改为字符串也会删除值,为什么?24859296>float/24859.3>nvarcharWelcome使用不精确的数据类型,@Nanaki。同样,当您将该值定义为浮点值时,您说您对这种行为感到满意。