表中有一字段:金额,real类型,如何在查询结果中强制显示两位小数
如=200   则为:200.00
  =200.1 则为:200.10
  =1.333 则为:1.33有就是类似于 access sql 中的 format:select format(金额,'0.00') from tab请帮我写一个等价的语句,非常感谢!

解决方案 »

  1.   

    select cast(金额 as decimal(14,2)) from tb
      

  2.   


     select   col=convert(numeric(18,2),col)   from   tb   
      或   
      select   col=cast(col   as   numeric(18,2))   from   tb
      

  3.   

    select cast(金额 as decimal(18,2)) from tb
      

  4.   

    cast (... as numeric(12,2))
      

  5.   

    Select  Convert(numeric(18,2), 200) AS MSum
    Select  Convert(numeric(18,2), 200.1) AS MSum
    Select  Convert(numeric(18,2), 1.333) AS MSum
      

  6.   

    Select  Convert(numeric(18,2), 金額) AS 金額 from Tab
      

  7.   

    真的很奇怪,不管是cast或者convert,在查询分析器中是显示2位小数,在程序中和企业管理器中的查询中200和200.1都不能格式化输出为2位小数,请问有谁试过吗,这是为什么呢?
      

  8.   

    比方讲:select cast(200,numeric(9,2))
    在查询分析器中输出为:200.00
    在企业管理器中(右键单击任何一个表->打开表->查询...)输出为:200,(200.1=200.1,1.333=1.33)在程序中的情况和2一样不信你试一下
      

  9.   


    select cast(金额 as decimal(14,2)) from tb
    select convert(decimal(14,2), 金额) from tb
      

  10.   

    在程序中也一样,我用的是vb
    加个adodc和datagrid控件,把2者关联起来,随便关联一个数据库,adodc.recordsource="select cast(200,numeric(9,2))",然后刷新一下,结果还是没有小数位,请问sql77,有没有什么其他方法,要求在语句中能解决的。谢谢!!
      

  11.   

    select cast(200 AS numeric(9,2))
                
    ----------- 
    200.00(所影响的行数为 1 行)在语句中这样不行吗,要在查询分析器中执行,企业管理器有些不支持
      

  12.   

    觉得楼主应该用DATASET查询出来,再进行绑定
      

  13.   

    情况是这样的,我一个程序的数据库要兼容access和sql2000,其中要求打印一个字段是金额(access:single类型,sql:real类型),要求强制打印出后2位小数,在access好解决,sql中死活不行,其实我用的不是控件 用的是adodc的open方法,但是返回的字段值始终不是固定为2位,请大家在自己的电脑上试一下,如果能格式化出200.00的效果再贴出来,道理我也讲不清。
      

  14.   

    没有办法,不能等了,用了一个最笨的办法,大家帮我想想有没有更好的:select LTrim(Left(str(cast(金额*100 as int),12),10)+'.'+Right(str(cast(金额*100 as int),12),2)
      

  15.   

    SELECT CAST(CAST(金额 AS NUMERIC(9,2)) AS VARCHAR(10))
    LZ这样试试
      

  16.   

    我也碰到过这种问题,再来一个最笨办法:
    建议楼主用临时表,[金额] decimal(20,2) default 0 NULL 
    insert into后再SELECT
      

  17.   

    select cast(金额 as decimal(18,2)) from tb
      

  18.   

    SELECT CAST(CAST(金额 AS NUMERIC(9,2)) AS VARCHAR(10)) 
    LZ这样试试你的方法非常好,适用最大7位整数,VARCHAR(10)也刚好和NUMERIC(9,2)匹配,小了碰到7位整数就报错。我也碰到过这种问题,再来一个最笨办法: 
    建议楼主用临时表,[金额] decimal(20,2) default 0 NULL 
    insert into后再SELECT 
    临时表肯定可以的,就是复杂了一点
      

  19.   

    1、非常感谢guguda2008,你的方法就是我想要的
    2、非常感谢SQL77,感谢您的热情帮助
    3、感谢其他朋友的参与谢谢大家