2013-11-22 607 views
4

我有一个要求,将正值转换为负值和负值转换为正值,如果它的0值保持原样。我能够做到这一点在SQL中,只需要知道是否有任何更好的方式/替代方法来做到这一点?oracle中的正值对负值和负值变为正值

create table test_tab 
(a number); 

insert into test_tab values (10); 
insert into test_tab values (-10); 
insert into test_tab values (0); 
insert into test_tab values (10.15); 
insert into test_tab values (-10.15); 

select a , decode(sign(a),-1,abs(a),1,-abs(a),0) "changed value" from test_tab; 

数据库Oracle - 11g第

回答

12

关于与-1相乘什么?

select a 
,  -1 * a "changed value" 
from test_tab; 
+0

简单的数学..感谢..我怎么错过了这个我不知道 –

3

如何只把负号

SELECT - -15 as inverse; 

-->15 

SELECT -15 as inverse; 

-->-15 
+1

inter esting option this ..并且像一个魅力一样工作 –

+2

这在Oracle中不起作用。 – user272735

0
select a , decode(sign(a),-1,abs(a),1,-abs(a),0) -a from test_tab; 

这就是你需要

+0

我知道这个选项,我在寻找替代方法 –

3

如何使用减法:

SELECT 0 - a "changed value" 
from test_tab; 
相关问题