IF OBJECT_ID('GetRealNum') IS NOT NULL DROP FUNCTION GetRealNum
GOCreate Function GetRealNum(@Num Numeric(18,2))
Returns Varchar(50)
As
Begin
Declare @Str Varchar(50)
Select @Str=Convert(Varchar(50),@Num)
If CharIndex('.',@Str)>0
Select @Str= Left(@Str,Len(@Str)-PatIndex('%[^0]%',Reverse(@Str))+1)
Return @Str
End
GOSelect dbo.GetRealNum(12)上面函数中Select dbo.GetRealNum(12.20000)是可以去掉后面的0的.结果为12.2
但是Select dbo.GetRealNum(12)后结果是12.
也就是23后面多了个小数点.怎么去掉????
GOCreate Function GetRealNum(@Num Numeric(18,2))
Returns Varchar(50)
As
Begin
Declare @Str Varchar(50)
Select @Str=Convert(Varchar(50),@Num)
If CharIndex('.',@Str)>0
Select @Str= Left(@Str,Len(@Str)-PatIndex('%[^0]%',Reverse(@Str))+1)
Return @Str
End
GOSelect dbo.GetRealNum(12)上面函数中Select dbo.GetRealNum(12.20000)是可以去掉后面的0的.结果为12.2
但是Select dbo.GetRealNum(12)后结果是12.
也就是23后面多了个小数点.怎么去掉????
GO
CREATE FUNCTION GetRealNum(@NUM NUMERIC(19,6))
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @STR VARCHAR(50)
SELECT @STR=CONVERT(VARCHAR(50),@NUM)
IF CHARINDEX('.',@STR)>0
SELECT @STR= LEFT(@STR,LEN(@STR)-PATINDEX('%[^0]%',REVERSE(@STR))+1)
IF CHARINDEX('.',@STR)=LEN(@STR)
SELECT @STR=LEFT(@STR,LEN(@STR)-1)
RETURN @STR
END
GO
SELECT DBO.GetRealNum(12.)
--12
--函数
create function dbo.GetRealNum(@num dec(18,10))
returns varchar(30)
as
beginreturn REVERSE(substring(REVERSE(convert(varchar(200),@num)),
PATINDEX('%[1-9]%',REVERSE(convert(varchar(200),@num))),
len(REVERSE(convert(varchar(200),@num)))))end
--调用
select dbo.GetRealNum(23.12000)
-----------------
23.12select dbo.GetRealNum(23)
--------------------------
23