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后面多了个小数点.怎么去掉????

解决方案 »

  1.   

    IF OBJECT_ID('GetRealNum') IS NOT NULL DROP FUNCTION GetRealNum
    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
      

  2.   


    --函数
    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