好用的函數sign和decode

 

      今天遇到了一個問題,需要對比一個字段和5的大小,大於5的輸出0,小於五的輸出1。如果是用PLSQL編程的話可以用if/else這種邏輯進行判斷,但是在SQL裏可不能這麼寫,經過網友推薦,我組合使用了sign和decode,效果很好,代碼小清新。

      代碼如下:

      


DECODE(SIGN(TRUNC(COL1 - COL2) - 5), 1, 0, 1) ONTIME_FLAG

      這樣就可以了。

      sign函數的作用是這樣的:

      如果sign的參數爲負數,就會輸出-1,如果爲正數就會輸出1,如果爲0則會輸出0。這樣的話,加上decode,就可以按照我的想法進行計算輸出了。

      而且sign是oracle提供的,其效率應該是高於自己寫的邏輯的,如果自己寫邏輯應該會有一個if/else。代碼量也會加大,像我這樣寫出來的代碼還是比較小清新的。希望對大家有幫助。

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