Oracle 中 sign和decode 函数用法
2015-11-09 17:27
661 查看
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. decode(sign(a-b),1,'a>b',sign(a-b),0,'相等','a<b'); 上面语句转换一下成java: if((a-b)>=1) { return 'a>b'; } else if((a-b)==0) { return '相等' } else{return 'a<b'} 因此:sign和decode用到的几率还是蛮大的
相关文章推荐
- 将oracle的Date转换为相应格式输出
- oracle数据库的导出与导入备忘
- Ubuntu Linux下安装Oracle JDK
- oracle系统包——dbms job用法(oracle定时任务)
- oracle 查询杀死死锁方案
- Oracle CASE WHEN 用法介绍
- Oracle如何跳过被锁死的数据
- Oracle 中 decode 函数用法
- Oracle分区表drop和truncate partition索引失效问题
- oracle中的约束
- wm_concat与listagg
- Oracle中查询使用正则表达式函数REGEXP_LIKE
- oracle建表
- oracle定期生成和删除表分区
- oracle session 相关优化
- JRE 1.8.0_65/66 Certified with Oracle E-Business Suite
- Oracle sql 优化 (转)
- BIEE11G配置Oracle数据源
- Oracle11g创建表空间分配用户语句
- oracle配置数据库连接方式