功能:将小数点后面多于的0去掉。
比如:12.1120000  调用后 变为  12.112
      12.00用后 变为  12
     
要的是一个函数比如传入的参数是12.2000select dbo.GetRealNum(12.2000)出来就是12.2

解决方案 »

  1.   

    如果是字符串中存储的数字数据需要去掉小数中的尾部0, 则参考:SELECT
      col,
      col_convert = CASE
      WHEN CHARINDEX('.', col) = 0
      THEN col
      WHEN RIGHT(col, PATINDEX('%[^0]%', REVERSE(col))) LIKE '.%'
      THEN LEFT(col, LEN(col) - PATINDEX('%[^0]%', REVERSE(col)))
      ELSE LEFT(col, LEN(col) - PATINDEX('%[^0]%', REVERSE(col)) + 1)
     END
    FROM(
      SELECT col = '100' UNION ALL
      SELECT col = NULL UNION ALL
      SELECT col = '.100' UNION ALL
      SELECT col = '.100100' UNION ALL
      SELECT col = '0.' UNION ALL
      SELECT col = '0' UNION ALL
      SELECT col = '100.1010' UNION ALL
      SELECT col = '100.0000' 
    )A-- 结果:
    col col_convert
    -------- -----------
    100 100
    NULL NULL
    .100 .1
    .100100 .1001
    0. 0
    0 0
    100.1010 100.101
    100.0000 100(8 行受影响)
      

  2.   

    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)RETURN @STR
    END
    GO
    SELECT DBO.GetRealNum(12.2000)
    --12.2
      

  3.   

    问下..SELECT DBO.GetRealNum(12)的话
    就出来了12.后面有个点..你试试