【发布时间】:2020-08-24 22:42:01
【问题描述】:
我有列 decimal(10,5) — VALUE,还有列 int — PICTURE。
所以,我需要四舍五入 VALUE 到小数点后的PICTURE 位。
例如:
- 如果
VALUE = 10.50000和PICTURE = 2,我想得到10.50; - 如果
VALUE = 0.15371和PICTURE = 3,我想得到0.154
如果我只使用Round() 或Cast(Round(...) as nvarchar),那么我有尾随零。如果我 Cast() 到 float,那么我会丢失零。
有什么解决办法吗?
【问题讨论】:
-
这是为您的表示层而不是 RDBMS 的东西。列只能有 1 种数据类型,并且该数据类型不能有不同的比例、精度和长度。对于
decimal列,如果该列定义为decimal(10,5),它将始终有5 个小数位,即使不需要任何小数位。如果你想要一个不同的 display 值,让你的显示层来处理它。 -
@Larnu,你是对的。我应该在表示层处理这个问题。但总是想要一个简单的解决方案,比如一次选择所有内容。
标签: sql sql-server