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