oracleでdecodeをsignと組み合わせて使用

19006 ワード

sqlにおけるcase whenのもう一つの書き方decode sign
1、sign    :
    sign(n);

sign :
     n , 0 1, 0 -1, 0 0(n ,(n-200))


    :
       a=10;
      b=50;
      sign(a-b) ==-1
      sign(b-a) == 1
      sign(a-10)==0




2 decode

: 
     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 IF

decode(123

        , 123
  123 , sql


   user      sex( ) , 1 0, , , decode
    select   decode(u.sex ,1, ,
from user u
; ,

    decode(u.sex ,1, , ); decode ( ) u.sex==1? : ( if else ), decode , > =、<=、 , sign(n) , sign() -1,0,1, , :
    :
   a = 10,
    b=50.
    select decode(sign(A-B),1,'a>b',0,' ',-1,'afrom (select  30 a ,50 b from dual);

  select decode (sign((select 1 from dual)-1),1,1,0,0,-1,1) from dual

    select decode(sign(A-B),1,'a>b',0,' ','afrom (select  30 a ,50 b from dual);

  select decode (sign((select 1 from dual)-1),1,1,0,0,-1) from dual
java:
     if((a-b)>=1)
       {
          return 'a>b';

         }
         else if((a-b)==0)
         {
               return ' '
          }
          else{return 'a}

だからsignとdecodeが使う確率は大きいです