zoukankan      html  css  js  c++  java
  • SQLServer中进行sql除法运算结果为小数时显示0的解决方案

    转自:http://blog.sina.com.cn/s/blog_8020e41101019k7t.html

    SELECT field1/field2 FROM TB;

      当 field1的数值 > field2的数值时,除法得出的结果是<1的,即0.xxxxxx

      这个时候在DB2的环境下SELECT出来的值是0

    解決方法:

    先把field1转换成DOUBLE类型的,这样计算出来的就会得出小数点了,会显示出0.xxxx

    SELECT CAST(field1 AS FLOAT)/field2 FROM TB;

    ps.網上搜的資料,寫的是double,但在SQL Server2008中一直報錯,改成FLOAT就沒問題了。

    小數點後顯示4位小數。

     

     可以進一步四舍五入,保留两位小数点

    SELECT ROUND(CAST(field1 AS DOUBLE)/field2, 2) FROM TB;

    不過因為我要用到百分比,就改成了

    SELECT CAST(field1 AS FLOAT)/field2 * 100 FROM TB;

    然後再頁面顯示時再加上“%”

     

    如果数据列的值为NULL,将其设置为0,那么sql就要这么写

      SELECT ROUND(COALESCE(CAST(field1 AS DOUBLE), 0)/field2, 2) FROM TB;

      COALESCE这个函数系统的用法如下:

      a. 输入参数为字符类型,且允许为空的,可以使用COALESCE(inputParameter,”)把NULL转换成”;

      b. 输入类型为整型,且允许为空的,可以使用COALESCE(inputParameter,0),把空转换成0;

      c. 输入参数为字符类型,且是非空非空格的,可以使用COALESCE(inputParameter,”)把NULL转换成”,然后判断函数返回值是否为”;

      d. 输入类型为整型,且是非空的,不需要使用COALESCE函数,直接使用IS NULL进行非空判断。

    ----------------------------------------------------------------

     

    备注:

    CAST函数用来类型转换

    ROUND函数用来控制小数位数

  • 相关阅读:
    POJ 1659 Frogs' Neighborhood
    zoj 2913 Bus Pass(BFS)
    ZOJ 1008 Gnome Tetravex(DFS)
    POJ 1562 Oil Deposits (DFS)
    zoj 2165 Red and Black (DFs)poj 1979
    hdu 3954 Level up
    sgu 249 Matrix
    hdu 4417 Super Mario
    SPOJ (BNUOJ) LCM Sum
    hdu 2665 Kth number 划分树
  • 原文地址:https://www.cnblogs.com/wangpei/p/4445038.html
Copyright © 2011-2022 走看看