SQL數學函數SIGN

 
在進行SQL查詢時,我們通常會有這樣一種需求,對一個自然數進行判斷,如果爲零,返回0,如果爲負數,統一返回-1,如果爲正數,統一返回1。這時就需要 sign() 函數的支持,下面爲具體用法:

一、SIGN(X)

返回參數作爲-101的符號,該符號取決於X的值爲負、零或正。

mysql>SELECT SIGN(-32);

        -> -1

mysql>SELECT SIGN(0);

        -> 0

mysql>SELECT SIGN(234);

        -> 1

二、ROUND(X) ROUND(X,D)

返回參數X,其值接近於最近似的整數。在有兩個參數的情況下,返回X,其值保留到小數點後D位,而第D位的保留方式爲四捨五入。若要接保留X值小數點左邊的D位,可將D設爲負值。

mysql>SELECT ROUND(-1.23);

        -> -1

mysql>SELECT ROUND(-1.58);

        -> -2

mysql>SELECT ROUND(1.58);

        -> 2

mysql>SELECT ROUND(1.298, 1);

        -> 1.3

mysql>SELECT ROUND(1.298, 0);

        -> 1

mysql>SELECT ROUND(23.298, -1);

        -> 20

返回值的類型同 第一個自變量相同(假設它是一個整數、雙精度數或小數)。這意味着對於一個整數參數,結果也是一個整數(無小數部分)

當第一個參數是十進制常數時,對於準確值參數,ROUND()使用精密數學題庫:

I 對於準確值數字, ROUND()使用“四捨五入” 或“舍入成最接近的數” 的規則:對於一個分數部分爲.5或大於.5的值,正數則上舍入到鄰近的整數值, 負數則下舍入臨近的整數值。(換言之,其舍入的方向是數軸上遠離零的方向)對於一個分數部分小於.5的值,正數則下舍入下一個整數值,負數則下舍入鄰近的整數值,而正數則上舍入鄰近的整數值。


II 對於近似值數字,其結果根據C庫而定。在很多系統中,這意味着ROUND()的使用遵循“舍入成最接近的偶數”的規則: 一個帶有任何小數部分的值會被舍入成最接近的偶數整數。

以下舉例說明舍入法對於精確值和近似值的不同之處:

mysql>SELECT ROUND(2.5), ROUND(25E-1);

+------------+--------------+

| ROUND(2.5) | ROUND(25E-1) |

+------------+--------------+

| 3          |            2 |

+------------+--------------+

 

這裏,round(25E-1)    是近似數值,mysql 會取最接近的偶數   輸出2                 

和java是不同的    java裏的Math.round(25E-1)  輸出也是3     oracle也輸出3

 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章