用类似下面的方法处理就行了: declare @str varchar(20) set @str=cast(102009800 as varchar)if right(@str,1)='0' set @str=left(@str,len(@str)-patindex('%0[1-9]%',reverse(@str))) print @str
用类似下面的方法处理就行了: declare @str varchar(20) set @str=cast(102009800 as varchar)if right(@str,1)='0' set @str=left(@str,len(@str)-patindex('%0[1-9]%',reverse(@str))) print @str
也可以将上面的处理语句写成函数:create function f_num2str(@i decimal(20,4)) return varchar(20) as begin declare @re varchar(20) set @str=cast(102009800 as varchar)if right(@str,1)='0' set @str=left(@str,len(@str)-patindex('%0[1-9]%',reverse(@str))) return(@str) end go--调用函数 select dbo.f_num2str(100),dbo.f_num2str(108300),dbo.f_num2str(1918)
select replace(cast(1230 as varchar),'0','')
zjcxc,这样做的话,把小数点前面的零也去掉了!能否只去小数点后尾部的零?
create function f_num2str(@i decimal(20,4)) return varchar(20) as begin declare @re varchar(20) set @str=cast(102009800 as varchar)while right(@str,1)='0' set @str=left(@str,len(@str) - 1 return(@str) end go
declare @str varchar(20)
set @str=cast(102009800 as varchar)if right(@str,1)='0' set @str=left(@str,len(@str)-patindex('%0[1-9]%',reverse(@str)))
print @str
declare @str varchar(20)
set @str=cast(102009800 as varchar)if right(@str,1)='0' set @str=left(@str,len(@str)-patindex('%0[1-9]%',reverse(@str)))
print @str
return varchar(20)
as
begin
declare @re varchar(20)
set @str=cast(102009800 as varchar)if right(@str,1)='0' set @str=left(@str,len(@str)-patindex('%0[1-9]%',reverse(@str)))
return(@str)
end
go--调用函数
select dbo.f_num2str(100),dbo.f_num2str(108300),dbo.f_num2str(1918)
return varchar(20)
as
begin
declare @re varchar(20)
set @str=cast(102009800 as varchar)while right(@str,1)='0'
set @str=left(@str,len(@str) - 1
return(@str)
end
go