说明,sql中的if和else 是不能在select 语句中使用的。只能用来控制sql程序的流程。只能用case when。

CREATE TABLE USER
(
NAME VARCHAR(20) NOT NULL,---姓名
SEX INTEGER,---性别(1、男 2、女)
BIRTHDAY DATE---生日
);

CASE使用场合1:把user表导出生成一个文件,要求性别为男或女,而不是1和2,怎么办?我们可以用如下的语句处理:

SELECT    
    NAME,   
    CASE SEX   
        WHEN 1 THEN '男'  
        ELSE '女'  
    END AS SEX,   
    BIRTHDAY   
FROM USER;  
 CASE使用场合2:假设user目前没有值,然后你往user导入了一批数据,但是很不幸,错把男设置成为2,而把女设置成为1,现在要求你变换过来,怎么办?

UPDATE USER SET SEX=   
(   
CASE SEX   
WHEN 1 THEN 2   
WHEN 2 THEN 1   
ELSE SEX   
END   
);

有时候,when中不是常值,需要判断,可以这样:

select name,
 case 
        when birthday<'1981' then 'old'
        when birthday>'1988' then 'yong'
        else 'ok'

END YORN
from lee;

我们 来判断工资的等级,并统计每一等级的人数。SQL代码如下;     
    
SELECT      
    
        CASE WHEN salary <= 500 THEN '1'      
    
             WHEN salary > 500 AND salary <= 600  THEN '2'      
    
             WHEN salary > 600 AND salary <= 800  THEN '3'      
    
             WHEN salary > 800 AND salary <= 1000 THEN '4'      
    
        ELSE NULL END salary_class,      
    
        COUNT(*)      
    
FROM    Table_A      
    
GROUP BY      
    
        CASE WHEN salary <= 500 THEN '1'      
    
             WHEN salary > 500 AND salary <= 600  THEN '2'      
    
             WHEN salary > 600 AND salary <= 800  THEN '3'      
    
             WHEN salary > 800 AND salary <= 1000 THEN '4'      
    
        ELSE NULL END;      
    
在Check中使用Case函数在很多情况下都是非常不错的解决方法。可能有很多人根本就不用Check,那么我建议你在看过下面的例子之后也尝试一下在SQL中使用Check。     
    
下面我们来举个例子     
    
公司A,这个公司有个规定,女职员的工资必须高于块。如果用Check和Case来表现的话,如下所示     
    
CONSTRAINT check_salary CHECK      
    
           ( CASE WHEN sex = '2'      
    
                  THEN CASE WHEN salary > 1000      
    
                        THEN 1 ELSE 0 END      
    
                  ELSE 1 END = 1 )      
    
如果单纯使用Check,如下所示     
    
CONSTRAINT check_salary CHECK      
    
           ( sex = '2' AND salary > 1000 )      
    
女职员的条件倒是符合了,男职员就无法输入了。  
 
 

Sql case when用法的更多相关文章

  1. sql case when 用法

    sql语言中有没有类似C语言中的switch case的语句?? 没有,用case   when   来代替就行了.            例如,下面的语句显示中文年月         select  ...

  2. Oracle CASE WHEN 用法介绍

    1. CASE WHEN 表达式有两种形式 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索 ...

  3. Oracle CASE WHEN 用法介绍[Z]

    Oracle CASE WHEN 用法介绍 1. CASE WHEN 表达式有两种形式 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ...

  4. oracle case when 用法

    原文:http://www.cnblogs.com/eshizhan/archive/2012/04/06/2435493.html 1. CASE WHEN 表达式有两种形式 --简单Case函数 ...

  5. 问题:oracle case when;结果:Oracle CASE WHEN 用法介绍

    Oracle CASE WHEN 用法介绍 1. CASE WHEN 表达式有两种形式 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ...

  6. SQL语句---nvl 用法

    SQL语句---nvl 用法   一NVL函数是一个空值转换函数 NVL(表达式1,表达式2) 如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值. 该函数的目的是把一个空值(nul ...

  7. SQL 语句日期用法及函数

    SQL 语句日期用法及函数 --DAY().MONTH().YEAR()——返回指定日期的天数.月数.年数:select day(cl_s_time) as '日' from class  --返回天 ...

  8. SQL 中ROLLUP 用法

    SQL 中ROLLUP 用法 ROLLUP 运算符生成的结果集类似于 CUBE 运算符生成的结果集. 下面是 CUBE 和 ROLLUP 之间的具体区别: CUBE 生成的结果集显示了所选列中值的所有 ...

  9. 标准SQL语言的用法

    原文链接:http://www.ifyao.com/2015/05/18/%E6%A0%87%E5%87%86%E7%9A%84sql%E8%AF%AD%E8%A8%80%E4%BD%BF%E7%94 ...

随机推荐

  1. ELK kibana查询与过滤(17th)

    在kibana中,可通过搜索查询过滤事务或者在visualization界面点击元素过滤. 创建查询 在Discover界面的搜索栏输入要查询的字段.查询语法是基于Lucene的查询语法.允许布尔运算 ...

  2. asp.net中父子页面通过gridview中的按钮事件进行回传值的问题

    这两天写BS程序,遇到父子页面传值的问题,以前没写过web系统,用了几天时间才将问题解决,总结下记录下来: 问题描述: 父页面A中有一个gridview,每行6个列,有5列中均有一个按钮,单击按钮,会 ...

  3. 21、HierarchyViewer使用记录

    1.是啥 HierachyViewer是一种能够方便开发人员了解activity中的布局信息的工具. 2.异常 HierachyViewer在未root过的设备或者低版本的设备是无法使用的 3.怎么办 ...

  4. Windows准备Node.js运行与开发环境

    如何在Windows环境下搭建Node.js开发环境:1.下载Node.js windows安装版http://www.nodejs.org/download/ 2.正常安装完成后,在系统环境变量已经 ...

  5. Codeforces Round #265 (Div. 1) C. Substitutes in Number dp

    题目链接: http://codeforces.com/contest/464/problem/C J. Substitutes in Number time limit per test 1 sec ...

  6. C实现面向对象封装、继承、多态

    参考资料:      http://blog.chinaunix.net/uid-26750235-id-3102371.html      http://www.eventhelix.com/rea ...

  7. 疑难杂症rendering(对角线上的线)

    postprocess全屏特效 对角线有条线 明显和buffer有关因为线由小的东西组成 就像之前没清空buffer产生的马赛克 beginscene时 clearmask 设0 ---------- ...

  8. Hibernate联合主键映射

    1.联合主键的映射规则 1) 类中的每个主键属性都对应到数据表中的每个主键列. Hibernate要求具有联合主键的实体类实现Serializable接口,并且重写hashCode与equals方法, ...

  9. Linux VPS 免费管理面板推荐

    现在各种国内外VPS,云主机横行,越来越多的站长接受在VPS上建站,很多VPS主机售价便宜,性能优秀,但都是基于linux系统的,如openvz的主机,linux服务器系统主要是通过shell命令行来 ...

  10. Struct2、Hibernate3、Spring3框架搭建实战(转)

    采用目前最新的struts-2.3.1.2.hibernate3.6.10.Final.spring-framework-3.1.1.RELEASE开发包,以及eclipse-jee-indigo-S ...