您的位置:首页 > 博客中心 > 数据库 >

SQL case when用法

时间:2022-03-14 07:02

说明,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 )            女职员的条件倒是符合了,男职员就无法输入了。      

热门排行

今日推荐

热门手游