SQL清除小数点后无效数字

SQL 函数——清除有效数字后面的0

1--创建标量值函数 

CREATE function [dbo].[ClearZero](@inValue varchar(50))
returns varchar(50)
as
begin
declare @returnValue varchar(20)
if(@inValue='')
   set @returnValue='' --空的时候为空
else if (charindex('.',@inValue) ='0')
   set @returnValue=@inValue --针对不含小数点的
else if ( substring(reverse(@inValue),patindex('%[^0]%',reverse(@inValue)),1)='.')
          set @returnValue =left(@inValue,len(@inValue)-patindex('%[^0]%',reverse(@inValue))) --针对小数点后全是0的
      else
          set @returnValue =left(@inValue,len(@inValue)- patindex('%[^0]%.%',reverse(@inValue))+1) --其他任何情形
return @returnValue
end

2--测试函数有效性

  1.创建临时表  2.插入数据  3.调用此标量值函数查询 4.最后删除临时表

create table #Tmp --创建临时表#Tmp
(
    num  decimal(18,4)
   
);

insert #Tmp --插入测试数据
select 1.0000  union
select 1.0001 union
select 1.0010  union
select 1.0100 union
select 1.1000 

select * from #Tmp
select dbo.ClearZero(num) from #Tmp; --查询

插入的测试数据                           调用函数后的数据

  


drop table #Tmp; --删除临时表 #Tmp

猜你喜欢

转载自blog.csdn.net/weixin_42413952/article/details/82758567
今日推荐