2014年5月26日 星期一

SQL學習 - ROUND 對數值欄位值進行四捨五入計算

用法:
SELECT  ROUND(column_name, decimals)  FROM  table_name;

decimals用來設定要四捨五入到小數點第幾位,0表示個位數。

範例1:
SELECT ROUND(Price, 0) FROM orders;

範例2:
ROUND(125.315) would return 125
ROUND(125.315, 0) would return 125
ROUND(125.315, 1) would return 125.3
ROUND(125.315, 2) would return 125.32
ROUND(125.315, 3) would return 125.315
ROUND(-125.315, 2) would return -125.32





SQL學習- ISNULL 或 NVL 選擇性條件

遇到某一個要計算的欄位,資料裡有NULL或都有值,在計算時不加以處理抓出來幾千幾百筆一個一個在網頁程式判繼是NULL要怎樣,非NULL又無樣,效率會拖得很慢。

好在SQL可以先幫我處理這個部份,需求是如果是NULL,預設為100,非NULL以抓出來的值為主。

善用 ISNULL (MS SQL/T-SQL) 或 NVL (Oracle/PLSQL) 函式,它們的語法近似:

ISNULL(A, B)
NVL(A, B)

上面兩個式子,都代表著,若是 A 不等於 NULL,則傳回 A,否則傳回 B。

實際運用:

Select sum(ROUND(a.STIPEND_AMT * (NVL(a.DISCOUNT_RATE, 100) /100))) as STIPEND_AMT  From Pay_Emp a