2010-09-22 26 views
3

我有一个场景,我需要舍入,然后从数字中删除多余的零。所以,如果我有一个数字,我已经舍入(12.456400000),我想零被删除。有没有我可以用来删除这些数字的函数?圆形函数似乎将零点留在原地?如何在SQL Server中整数

一如既往地非常感谢输入。

--S

+0

重复的问题:http://stackoverflow.com/questions/ 2938296 /删除后缀零从十进制在SQL服务器 – JeffO 2010-09-22 16:42:08

回答

1

创建用户定义函数(MSDN link),并尽量减少代码:

CREATE FUNCTION [dbo].[RemoveTrailingZeros] 
(
    @Value decimal 
) 
RETURNS decimal 
AS 
BEGIN 
    RETURN replace(rtrim(replace(@Value, '0', ' ')), ' ', '0') 
END 

如下你会使用它:

SELECT dbo.RemoveTrailingZeros(12.456400000) 
+0

甜蜜的感谢信息 – scarpacci 2010-09-23 05:19:31

+0

太糟糕了,它会留下一个尾随期间的整数。 '12.00000 - > 12.' – 2011-04-28 19:23:54

+0

@Shredder此功能旨在删除所有尾随零。如果你想指定数字的数量,你可以使用JamWheel的CAST解决方案 – 2012-09-25 17:54:45

1

当然,试试这个:

select replace(rtrim(replace('12.456400000', '0', ' ')), ' ', '0') 
0

想必你知道你有多少位小数四舍五入到,这样你就可以转换为十进制数据类型是正确数量DP的圆形外

CAST(ROUND(Field, 4) AS DECIMAL(12, 4)) 
相关问题