如何设计数据数类型,使起数字型的小数位在有小数时才显示?
我的数据中,有些有小数,有些又没有小数.
我试了decimal(18, 2)和numeric(18, 2),他们使用得我没有小数的数据后面直接加上了.00我用real可以得到我想要的效果,但是在进行sun运算时,确莫名其妙得多了一串小数.比如表中字段amount,有数据是134、123.43、43、45.33、234、432.31
我要得就是直接这样,不须要再给我加个.00在后面,应该如何设置这个字段。谢谢啦

解决方案 »

  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.   

    如何设计数据数类型,使起数字型的小数位在有小数时才显示? 
    --
      我看这个不要处理
    我的数据中,有些有小数,有些又没有小数. 
    我试了decimal(18,   2)和numeric(18,   2),他们使用得我没有小数的数据后面直接加上了.00 
    我用real可以得到我想要的效果,但是在进行sun运算时,确莫名其妙得多了一串小数. 
    比如表中字段amount,有数据是134、123.43、43、45.33、234、432.31 
    我要得就是直接这样,不须要再给我加个.00在后面,应该如何设置这个字段。 
    ----我只有在从数据库取出数据在处理了,,
      

  3.   

    real是浮点型,有误差的,不要使用。
    另外,你的需求应该在客户端实现。在软件中对数据格式进行控制就行了。
      

  4.   

    看来只有在客户端来弄了,现在是用的是decimal(18, 2)不知道我这种情况,用那种好些?
    decimal(18, 2)
    numeric(18, 2)real计算出来有问题,以所不能用..
      

  5.   

    根据老乌龟写的,你可以自己在改下 ,把 col转换下 cast(num as varchar(50)) 把你的decimal类型数据转换为字符串