说明,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. jQuery 效果 - slideDown() 方法[菜单导航栏常用]

    实例 以滑动方式显示隐藏的 <p> 元素: $(".btn2").click(function(){ $("p").slideDown(); }); ...

  2. 刷机总结(阿里云os-->android4.2.2)注明:本文不是教程

    注明:本文不是教程 写这篇文章的目的:让准备刷机的人(无论你是小白还是老鸟,当然老鸟就不用看了)用最短的时间了解刷机过程 其实本来目的是准备将阿里云的2.3.7升级到3.0的,但是3.0没有针对基伍大 ...

  3. 【Python】vim7.4 配置python2.6支持Gundo

    问题描述:          vim7.4 配置python2.6支持Gundo   参考资料:         (1)  http://sjl.bitbucket.org/gundo.vim/    ...

  4. BZOJ 3714: [PA2014]Kuglarz

    Description 魔术师的桌子上有n个杯子排成一行,编号为1,2,-,n,其中某些杯子底下藏有一个小球,如果你准确地猜出是哪些杯子,你就可以获得奖品.花费c_ij元,魔术师就会告诉你杯子i,i+ ...

  5. Winform 打印PDF顺序混乱,获取打印队列

    工作中PDF打印顺序混乱着实让我疼痛了好久,其实决绝方法非常简单,但没有想到这个点子的时候确实让我走了很多弯路 这里文章写出来并不是为了炫耀什么,只是觉得发现些好东西就分享出来而已,同时也做个记录,方 ...

  6. 引擎设计跟踪(九.14.2e) DelayLoaded DLLs (/DELAYLOAD)

    关于DLL的delay load: http://msdn.microsoft.com/en-us/library/151kt790.aspx 最近在做GLES的shader compiler, 把现 ...

  7. Javascript里的那些距离们

    1.有滚动条的控件的距离: scrollTop和scrollLeft:分别指有滚动条的容器控件的滚动条的top和left:页面滚动条的通用取法:document.body.scrollTop(FF\C ...

  8. JSP 页面打印

    <HTML><HEAD><TITLE>javascript打印-打印页面设置-打印预览代码</TITLE> <META http-equiv=Co ...

  9. iOS正则匹配手机号

    #pragma 正则匹配手机号 + (BOOL)validateMobile:(NSString *)mobileNum {     /**      * 手机号码      * 移动:134[0-8 ...

  10. 数据库(.udl)简单测试连接

    当我们烦于打开数据库进行连接的时候,我们可以用udl进行测试连接,并可以获得连接字符串. 1.新建一个txt文件,然后将后缀改成udl保存. 2.双击打开udl文件. 3.进行数据库连接测试. 4.用 ...