查询字符串中的SQL Server十进制格式

时间:2011-04-28 18:58:32

标签: sql-server-2005 number-formatting

我在网上找到了几个解决方案,但没有真正做我正在寻找的解决方案。所以,这里...... 我的表格中有几列数字(8,4),数字(8,5)等,当我检索数据时,它带有所有尾随的0。有没有办法我可以格式化它,所以它不会留下所有尾随和领先的0?我不想指定精度长度。以下是我正在寻找的一些例子:

145.5000 -> 145.5
145.6540 -> 145.654
73.4561 -> 73.4561
37.0000 -> 37

非常感谢!

2 个答案:

答案 0 :(得分:2)

Float和real都是近似数据类型,因此这可能不适用于您遇到的每个值。鉴于你只有4或5位数的精度,我认为这种方法总是有效,但是你需要在将它实现到生产之前对它进行测试。

DECLARE @d DECIMAL(8,5)

select @d = 5.12030

Select Convert(Float, @d)

答案 1 :(得分:1)

理想情况下,您希望在前端代码中执行此操作

那么如果你想要的只是0.37,你将如何区分37.037

这是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