sql server 编写函数,去除小数点后多余的0

sql server 编写函数去除小数点后多余的0

要在 sql Server 中编写一个函数去除小数点后多余的零,你可以使用以下示例的方法

CREATE FUNCTION dbo.RemoveTrailingZeros(@input DECIMAL(18, 6))
RETURNS VARCHAR(255)
AS
BEGIN
    DECLARE @result VARCHAR(255);

    -- 将 DECIMAL 转换为字符串,然后使用 RTRIM 去除右侧的空格
    SET @result = RTRIM(CAST(@input AS VARCHAR(255)));

    -- 如果字符串中包含小数点,则进一步处理
    IF CHARINDEX('.', @result) > 0
    BEGIN
        -- 从右向左查找第一个非零字符
        DECLARE @i INT = LEN(@result);
        WHILE @i > 0 AND SUBSTRING(@result, @i, 1) = '0'
        BEGIN
            SET @i = @i - 1;
        END

        -- 如果找到非零字符,则去除它右侧的零
        IF @i > 0 AND SUBSTRING(@result, @i, 1) = '.'
        BEGIN
            SET @i = @i - 1;
        END

        SET @result = LEFT(@result, @i);
    END

    RETURN @result;
END;

 

上述代码创建了一个名为 RemoveTrailingZeros函数,该函数接受一个 DECIMAL(18, 6) 类型的输入参数,表示带有小数点的数值。函数首先将 DECIMAL 转换为字符串,然后使用 RTRIM 函数去除右侧的空格。接下来,它会检查字符串中是否包含小数点,如果包含,则从右向左查找第一个非零字符,并去除它右侧的零。

要使用此函数,可以像这样调用它:

DECLARE @input DECIMAL(18, 6) = 123.450000;
DECLARE @result VARCHAR(255);

SET @result = dbo.RemoveTrailingZeros(@input);
SELECT @result; -- 将返回 "123.45"

 

这个函数可以用于去除小数点后多余的零,并返回一个字符串表示。

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...