微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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"

 

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐