SQLServer中進行sql除法運算


轉自: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進行非空判斷。

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

 

CONVERT(
                            VARCHAR(6),
                            ROUND(
                                     COALESCE(CAST(((AllCount - CompleteCount) * 100) AS DOUBLE PRECISION), 0)
                                     / AllCount,
                                     2
                                 )
                        ) + '%'

 

備注:

CAST函數用來類型轉換

ROUND函數用來控制小數位數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM