首页 > 数据库 >sql server 编写函数,去除小数点后多余的0

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

时间:2023-10-10 15:48:20浏览次数:53  
标签:SET 函数 DECIMAL sql 小数点 server result 去除

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"

 

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

标签:SET,函数,DECIMAL,sql,小数点,server,result,去除
From: https://www.cnblogs.com/beichengshiqiao/p/17754829.html

相关文章

  • SQLServer报错: Got minus one from a read call
    用JDBC连接SqlServer数据库时,报这个错误。网上很多都说是数据库的连接已经满了。但我实际查询的时候,数据库连接数并没有满。 后来发现原因了,是代码存在疏忽。我把驱动类写成了Oracle的驱动类。所以这个错误实际上有一种可能是因为使用了错误的驱动类导致的。 ......
  • winserver2012 搭建AD域
    1、添加AD域功能      2、安装完,配置域服务   一直下一步,安装完后会自动重启 3、创建组织单位,添加域账户和联系人     4、查询当前域用户dsqueryuser-nametest1 ......
  • MySQL 低版本 解决row_number()over()无法使用的方法
    MySQL8以上版本支持了很多的窗口函数,但是低版本的可能也需要用到row_number()over()selecta.u_name,a.class,a.score,if((@class=null)or(@class=a.class),@rownum:=@rownum+1,@rownum:=1)rn,#没有并列情况if((@class=......
  • MySQL存储过程、递归调用
    MySQL存储过程、递归调用实现字典数据的预处理,维护类别表、数据表、tree表,数据库在jwzh_manager库1、先将excel导入到system_dict表,按表字段注释对应匹配。2、编写存储过程处理数据CREATEDEFINER=`root`@`%`PROCEDURE`handle_system_dict`()BEGIN #Routinebodygoesher......
  • Sqli-labs通关实况之第一关
    Sqli-labsless-1首先看题,提示你输入数字值的ID作为参数,我们输入?id=1,发现直接得到登录名和密码输入的数值不同,回显内容也不同,所以输入的内容是带入到数据库里面查询了接下来判断是字符型还是数字型我们可以在数值1后面加上一个单引号和双引号来判断,先加入单引号看看。可以......
  • 9月《中国数据库行业分析报告》已发布,47页干货带你详览 MySQL 崛起之路!
    为了帮助大家及时了解中国数据库行业发展现状、梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新《中国数据库行业分析报告》,持续传播数据技术知识、努力促进技术创新与行业生态发展,目前已更至第十七期,并发布了共计1......
  • C#与SqlServer数据对照
    Decimal报错:Nostoretypewasspecifiedforthedecimalproperty'GridElectricityPurchase'onentitytype'ChargeDischarge'.Thiswillcausevaluestobesilentlytruncatediftheydonotfitinthedefaultprecisionandscale.Explicit......
  • 设计模式之 Observer Pattern观察者模式
    观察者模式Observer  Observer模式为组件向相关接收方【广播】消息提供了灵活的方法;  该模式定义了对象一到多的依赖关系,这样当对象改变状态时,将自动通知并更新他所有的依赖对象;  优点    抽象了主体与Observer之间的耦合关系;    支持广播方式的通信......
  • MySQL进阶篇:第三章_SQL性能分析
    MySQL进阶篇:第三章_SQL性能分析SQL执行频率MySQL客户端连接成功后,通过show[session|global]status命令可以提供服务器状态信息。通过如下指令,可以查看当前数据库的INSERT、UPDATE、DELETE、SELECT的访问频次:--session是查看当前会话;--global是查询全局数据;SHOW......
  • 定时备份mysql脚本
    定时备份mysql指定数据库脚本,保留60天#!/bin/bash#pathcd/opt/pmo/mysql_datatarget_directory="/opt/pmo/mysql_data"#gettimenowcurrent_time=$(date+%s)#cal22monthsagobefore_time=$(date-d"60daysago"+%s)file_name=metersphere_`date+......