DECODE函数和CASE WHEN 比较
http://blog.csdn.net/zhangbingtao2011/article/details/51384393
一,DECODE函数
DECODE(value, if1, then1, if2, then2, if3, then3,...ifn, thenn, else)
表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。亦即:decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
select decode(sign(arg1-arg2),-1, arg1, arg2) from dual; --get arg1与arg2的较小值
select decode(sign(3-5),1 ,3, 5) from dual
注:sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
二,CASE WHEN
其语法如下:
SELECT <myColumnSpec> =
CASE WHEN <A> THEN <somethingA>
WHEN <B> THEN <somethingB>
ELSE <somethingE> END
除了可以在select 中使用CASE 外,where 子句,group by 子句,order by 子句都可以使用
SELECT CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END AS "Range",
Title
FROM titles
where
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives' END in('Average','Bargain')
GROUP BY CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives' END,
Title
ORDER BY CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END,Title
rm_site_master 表结构:
rma_center | name
---------------------------
123 |qw
23 |ASde
45 |sssdf
55 |e3fbg
55555 |adfv
22221 |sdfsfe
4 |sdfeg
579 |lojgdex
select name,
CASE
WHEN rma_center IS NULL THEN 'Null'
WHEN rma_center > 1000 THEN '>1000'
WHEN rma_center BETWEEN 30 and 100 THEN '30~100'
ELSE 'Gift to impress relatives' END AS "RMA CENTER Type"
from rm_site_master
where CASE
WHEN rma_center IS NULL THEN 'Null'
WHEN rma_center > 1000 THEN '>1000'
WHEN rma_center BETWEEN 30 and 100 THEN '30~100'
ELSE 'Gift to impress relatives' END in('30~100','>1000')
group by CASE
WHEN rma_center IS NULL THEN 'Null'
WHEN rma_center > 1000 THEN '>1000'
WHEN rma_center BETWEEN 30 and 100 THEN '30~100'
ELSE 'Gift to impress relatives' END,
name
order by CASE
WHEN rma_center IS NULL THEN 'Null'
WHEN rma_center > 1000 THEN '>1000'
WHEN rma_center BETWEEN 30 and 100 THEN '30~100'
ELSE 'Gift to impress relatives' END,
name
三,DECODE 与CASE WHEN 的比较
1,DECODE Oracle 特有;
2,CASE WHEN Oracle , SQL Server, MySQL 都可用;
3,DECODE 只能用做相等判断,但是可以配合sign函数进行大于,小于,等于的判断,CASE 可用于=,>=,<,<=,<>,is null,is not null 等的判断;
4,DECODE 使用其来比较简洁,CASE 虽然复杂但更为灵活;
DECODE函数和CASE WHEN 比较的更多相关文章
- oracle decode函数 和 case when
1.oracle decode分支函数 select decode(to_char(B.LQSJ, 'hh24:mi:ss'), '00:00:00', to_char(B.LQSJ, 'yyyy-m ...
- oracle 使用 decode函数 或 case when 实现行转列
----创建测试表 create table student_score( name varchar2(20), subject varchar2(20), score number(4,1) ); ...
- Mysql-通过case..when实现oracle decode()函数进行多值多结果判断
oracle的decode函数使用:http://www.cnblogs.com/hwaggLee/p/5335967.html case ..when 函数使用:http://www.cnblogs ...
- oracle的case when的用法和decode函数的用法
oracle中,我们要使用case when时,要怎样使用 如下测试数据,我要把ClassId 的1变成一班,2变成二班,3变成三班,那sql要怎样写呢? 1.case when的用法 -- orac ...
- 今天的一个SQL题-case语句和decode函数
数据库表: select * from rec order by rst,game_time; ID GAME_TIME RST ------ -------------- ---- 2 0 ...
- SQL函数之---DECODE函数
Decode函数是oracle/SQL提供的特有函数计算方式,语法:DECODE(value,if1,then1,if2,then2,if3,then3,...else),通常我们在写语句的时候可能会 ...
- ORACLE的sign函数和DECODE函数
比较大小函数 sign 函数语法:sign(n) 函数说明:取数字n的符号,大于0返回1,小于0返回-1,等于0返回0 示例:一.select sign( 100 ),sign(- 100 ),sig ...
- oracle decode函数用法
DECODE函数是ORACLE PL/SQL是功能强大的函数之中的一个,眼下还仅仅有ORACLE公司的SQL提供了此函数,其它数据库厂商的SQL实现还没有此功能.DECODE有什么用途 呢? 先构造一 ...
- 转载-Oracle ORACLE的sign函数和DECODE函数
原文地址:http://www.cnblogs.com/BetterWF/archive/2012/06/12/2545829.html 转载以备用 比较大小函数 sign 函数语法:sign(n) ...
随机推荐
- PLSQl的使用技巧与快捷键
最近在开发过程中,遇到一些麻烦,就是开发效率问题,有时候其他同事使用PLSQL 编程效率明显高于自己,观察了好久,才发现他使用PLSQL 已经很长时间了而且,他自己也在其中添加了好多快捷方式, ...
- Go读写文件
Go序列化和反序列化 package main import ( "bufio" "encoding/json" "fmt" "o ...
- (转载) 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)
这一篇是从0开始搭建SQL Server AlwaysOn 的第二篇,主要讲述如何搭建故障转移集群,因为AlwaysOn是基于Windows的故障转移集群的 在讲解步骤之前需要了解一下故障转移集群仲裁 ...
- neo4j安装部署
链接: https://blog.csdn.net/u013946356/article/details/81736232
- YAML_06 playbook从上往下顺序执行,若报错,不提示,继续往下执行
ansible]# vim user4.yml --- - hosts: cache remote_user: root vars: user: bb tasks: - sh ...
- 在运维中的shell经验总结
来自良许Linux公众号 编写 脚本开头部分应有脚本功能说明.参数使用说明.作者姓名.创建/修改日期.版本信息,格式为: 脚本编写时,注意格式对齐,如所有的循环或者判断语句前后的语句进行对齐,以及ca ...
- Linux----添加zabbix-agent
1.zabbxi-agent安装及配置 1.1 获取官方zabbix源 [root@localhost ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/r ...
- mac安装rust的pyo3模块
Rust 发布的工具链包括了 stable.beta 和 nightly 三种不同版本. nightly 是最激进的版本,包含了大量(可能不稳定)的新/高级特性.stable 版本目前可能还不支持一些 ...
- strace命令 一
简介 strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核 ...
- Visual Studio、.NET Framework、VC++、C#各个版本的对应关系
Visual Studio..NET Framework.VC++.C#各个版本的对应关系 Visual Studio版本 .NET Framework版本 内部版本 VC++版本 C#版本 Visu ...