全部博文(136)
分类: Oracle
2008-11-28 20:50:44
SQL> create table yct(a number);
表已创建。
SQL> insert into yct values(8);
已创建 1 行。
SQL> insert into yct values(0);
已创建 1 行。
SQL> insert into yct values(-5);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from yct;
A
---------- 8 0 -5 SQL> select case when a>0 then 1 else 0 end
2 from yct; CASEWHENA>0THEN1ELSE0END
------------------------ 1 0 0 |
SQL> select decode(a, 0, 0,
2 decode(a+abs(a), 0, 0, 1) 3 ) 4 from yct SQL> / DECODE(A,0,0,DECODE(A+ABS(A),0,0,1)) ------------------------------------ 1 0 0 |
SQL> select decode(sign(a), 0, 0,
2 -1, 0, 3 1) 4 from yct; DECODE(SIGN(A),0,0,-1,0,1) -------------------------- 1 0 0 |
SQL> insert into yct values(4);
已创建 1 行。
SQL> insert into yct values(9);
已创建 1 行。
SQL> insert into yct values(1);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from yct;
A
---------- 8 0 -5 4 9 1 已选择6行。
SQL> select decode(sign(a-7), 0, 0,
2 -1, -10, 3 10) 4 from yct SQL> / DECODE(SIGN(A-7),0,0,-1,-10,10)
------------------------------- 10 -10 -10 -10 10 -10 已选择6行。 |
sign::=
SIGN
returns -1 if
n
<0, then . If n
=0, then the
function returns 0. If n
>0, then SIGN
returns 1.
The following example indicates that the function's argument (-15) is <0:
SELECT SIGN(-15) "Sign" FROM DUAL;
Sign
----------
-1