Oracle 中 sign和decode 函数用法

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

        

<pre class="sql" name="code">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(字段或字段的运算,值1,值2,值3)

       这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3
 当然值1,值2,值3也可以是表达式,这个函数使得某些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,'a<b') from (select  30 a ,50 b from dual);
或者这样写
    select decode(sign(A-B),1,'a>b',0,'相等','a<b') from (select  30 a ,50 b from dual);
上面语句转换一下成java:
     if((a-b)>=1)
       {
          return 'a>b';

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


因此:sign和decode用到的几率还是蛮大的

 

 

 

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值