使用decode来检查负值和正值

use*_*384 7 sql

您有没有办法使用解码来检查sql中的正值和负值?

例如

select decode(money_return, **<0**, abs(money_return), **>0**, 
money_return*10, money_return) from cash_t;
Run Code Online (Sandbox Code Playgroud)

如果逻辑在if else语句中编码,它将是这样的:

if(money_return<0){money_reutrn = abs(money_return);}
else if(money_return>0){money_reutrn = money_return*10;}
else {money_return = money_return;}
end
Run Code Online (Sandbox Code Playgroud)

谢谢.

rs.*_*rs. 7

你需要案例陈述

select CASE 
 WHEN money_return < 0 THEN abs(money_return)
 WHEN money_return > 0 THEN money_return*10
 ELSE money_return END money_return from cash_t;
Run Code Online (Sandbox Code Playgroud)


Dam*_*ght 6

您可以使用带有解码的"签名".对于任何负数,该符号将返回-1,对于0表示0将返回1,对于任何正数将返回1:

select decode(sign(money_return), -1, abs(money_return), 
                                   1, money_return*10, 
                                   money_return) 
from cash_t;
Run Code Online (Sandbox Code Playgroud)