我在网上找到了几个解决方案,但没有真正做我正在寻找的解决方案。所以,这里...... 我的表格中有几列数字(8,4),数字(8,5)等,当我检索数据时,它带有所有尾随的0。有没有办法我可以格式化它,所以它不会留下所有尾随和领先的0?我不想指定精度长度。以下是我正在寻找的一些例子:
145.5000 -> 145.5
145.6540 -> 145.654
73.4561 -> 73.4561
37.0000 -> 37
非常感谢!
答案 0 :(得分:2)
Float和real都是近似数据类型,因此这可能不适用于您遇到的每个值。鉴于你只有4或5位数的精度,我认为这种方法总是有效,但是你需要在将它实现到生产之前对它进行测试。
DECLARE @d DECIMAL(8,5)
select @d = 5.12030
Select Convert(Float, @d)
答案 1 :(得分:1)
理想情况下,您希望在前端代码中执行此操作
那么如果你想要的只是0.37
,你将如何区分37.0
和37
?
这是SQL中的一种方式
将0替换为空格并进行修剪,然后将空格替换回0
例如
编辑:错过了前面的跟踪点...作为案例陈述添加了
DECLARE @d DECIMAL(8,5)
select @d = 5.12030
SELECT CASE WHEN RIGHT(REPLACE(RTRIM(LTRIM(REPLACE(CONVERT(VARCHAR(100),@d),'0',' '))),' ','0'),1) = '.'
THEN REPLACE(REPLACE(RTRIM(LTRIM(REPLACE(CONVERT(VARCHAR(100),@d),'0',' '))),' ','0'),'.','')
ELSE
REPLACE(RTRIM(LTRIM(REPLACE(CONVERT(VARCHAR(100),@d),'0',' '))),' ','0') END