今天遇到了乙個問題,需要對比乙個欄位和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。**量也會加大,像我這樣寫出來的**還是比較小清新的。希望對大家有幫助。
好用的函式sign和decode
今天遇到了乙個問題,需要對比乙個欄位和5的大小,大於5的輸出0,小於五的輸出1。如果是用plsql程式設計的話可以用if else這種邏輯進行判斷,但是在sql裡可不能這麼寫,經過推薦,我組合使用了sign和decode,效果很好,小清新。如下 decode sign trunc col1 col2...
decod函式的用法
decode 條件,值1,返回值1,值2,返回值2,值n,返回值n,預設值 該函式的含義如下 if 條件 值1 then return 翻譯值1 elsif 條件 值2 then return 翻譯值2 elsif 條件 值n then return 翻譯值n else return 預設值 end...
ORACLE的sign函式和DECODE函式
一.比較大小函式 sign 函式語法 sign n 函式說明 取數字n的符號,大於0返回1,小於0返回 1,等於0返回0 示例 1 select sign 100 sign 100 sign 0 from dual sign 100 sign 100 sign 0 1 1 0 2 a 10,b 20...