【发布时间】:2011-02-20 12:26:39
【问题描述】:
我们在数据库中存储一个小数(9,8)。它可以在小数点后有任意位数(嗯,不超过 8 位)。我很沮丧,因为我想将它显示为人类可读的文本,作为在服务器上创建的更大字符串的一部分。我希望小数点右侧的小数与非零一样多,例如:
0.05
0.12345
3.14159265
都很好
如果我这样做了
CAST(d AS varchar(50))
我得到如下格式:
0.05000000
0.12345000
3.14159265
如果我在转换为 varchar 之前转换/转换为浮点数或其他类型,我会得到类似的输出。我知道怎么做固定的小数位数,比如:
0.050
0.123
3.142
但这不是我想要的。
是的,我知道我可以通过复杂的字符串操作(REPLACE 等)来做到这一点,应该有一个很好的方法来做到这一点。
【问题讨论】:
-
在这种情况下,您会发现报告工具在格式化方面比数据库做得更好。
-
不必赘述,但在 SQL 中这样做很麻烦的原因是 SQL 不是为格式化数据而设计的;它旨在返回数据。因此,通过将小数返回给调用应用程序并让它按照您想要的方式格式化它会更容易完成。从变通方法中可以看出,SQL 在字符串操作方面很糟糕。
标签: sql sql-server tsql formatting decimal