精华内容
下载资源
问答
  • as 月份 CASE 可能是 SQL 被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在 WHERE 子句中使用 CASE。 首先让我们看一下 CASE 的语法。在一般的 SELEC
  • MySQL 语句执行优先级——and比or高 例: select * from table where 条件1 AND 条件2 OR 条件3 等价于 select * from table where ( 条件1 AND 条件2 ) OR 条件3 select * from table where 条件1 AND 条件2 OR ...

    MySQL 语句中执行优先级——and比or高

    例:

    select * from table where 条件1 AND 条件2 OR 条件3

    等价于

    select * from table where ( 条件1 AND 条件2 ) OR 条件3

    select * from table where 条件1 AND 条件2 OR 条件3 AND 条件4

    等价于

    select * from table where ( 条件1 AND 条件2 ) OR ( 条件3 AND 条件4 )

    sql执行顺序

    from > on > join > where > group by > having > select > order by > limit

    Case When

    当我们需要从数据源上 直接判断数据显示代表的含义的时候 ,就可以在SQL语句中使用 Case When这个函数了.

    Case具有两种格式。简单Case函数和Case搜索函数。

    第一种 格式 : 简单Case函数 :

    格式说明

    case 列名
    
        when  条件值1  then  选择项1
    
        when  条件值2   then  选项2.......
    
        else   默认值    end
    

    eg:

    select
        case   job_level
        when   '1'   then   '1111'
        when   '2'   then   '1111'
        when   '3'   then   '1111'
        else    'eee' end
        from   dbo.employee
    

    第二种 格式 :Case搜索函数

    格式说明

    case  
    
        when  列名= 条件值1  then  选择项1
    
        when  列名=条件值2   then  选项2.......
    
        else   默认值 end
    

    eg:

    update  employee
        set     e_wage =
        case
        when  job_level = '1'   then e_wage*1.97
        when  job_level = '2'  then e_wage*1.07
        when  job_level = '3'  then e_wage*1.06
        else   e_wage*1.05
        end
    

    提示:通常我们在写Case When的语句的时候,会容易忘记 end 这个结束,一定要记得哟!

    展开全文
  • SQL中case when语句的两种用法

    千次阅读 2019-06-22 17:11:24
    case函数,严格的意义上来讲case函数已经试流程控制语句了,不是简单意义上的...这一种是之前比较常用的一种方式,相当于是大部分编程语言的switch case的用法,通过字段名,去匹配字段值,适合字段值比较固定的...

    case函数,严格的意义上来讲case函数已经试流程控制语句了,不是简单意义上的函数,不过为了方便,很多人将case函数称为流程控制函数。

    case函数的一般有两种用法:

    (1)方式一

    case 字段名 when 字段值 then 值1 else 值2 end 
    

    这一种是之前比较常用的一种方式,相当于是大部分编程语言中的switch case的用法,通过字段名,去匹配字段值,适合字段值比较固定的情况下使用,特点是比较简洁易用。
    示例:

    下面的sql语句就是就是用来判断是好孩子,我们偏爱tom所以我们认为他是好孩子,jack是坏孩子,其他的都是普通孩子
    
    select fname, (
    
    case fname
    
    when 'tom' then '好孩子'
    
    when 'jack' then '坏孩子'
    
    else '普通孩子'
    
    end
    
    ) as isgoodchild
    
    from T_person
    

    (2)方式二

    case when 条件 then 值1 else 值2 end
    

    这一种应该用过的人比较少一些,一般情况下也不需要使用这种判断方式,如果情况允许的话,最好是在where子句中进行条件筛选,避免数据库不必要的性能消耗。但是一些特殊的情况下还是会用到的。这种用法的特点其他编程语言中的if else条件语句十分相似的 when后面的是一个条件表达式,根据表达式的结果来进行决定是否为then后面的值,使用起来比较灵活,可以适应更多的复杂情况。
    示例:

    比如下面的sql语句判断一个人的体重是不是正常,如果体重大于50偏重,小于40偏轻,介于40到50之间正常。
    
    select
    
    fname,fweight,(
    
    case
    
    when fweight <40 then 'thin'
    
    when fweight > 50 then 'fat'
    
    else 'ok'
    
    end
    
    ) as isnormal
    
    from T_person.
    

    事实上绝大部分的第一种用法都是可以转换为第二种的形式来写的,但是这样写的时候会显得SQL语句比较繁琐,不易阅读,大部分情况下还是建议使用第一种用法,如果遇到无法处理的情况下再使用第二种进行处理。

    展开全文
  • 首先聚个 简单CASE WHEN函数: ...CASE SCORE WHEN 'C' THEN '' ELSE '不及格' END 等同于,使用CASE WHEN条件表达式函数实现: CASE WHEN SCORE = 'A' THEN '优' WHEN SCORE = 'B' THEN '良' WHEN SCO...

    首先举个 简单CASE WHEN函数:

    CASE SCORE WHEN 'A' THEN '优' ELSE '不及格' END
    CASE SCORE WHEN 'B' THEN '良' ELSE '不及格' END
    CASE SCORE WHEN 'C' THEN '中' ELSE '不及格' END
     等同于,使用CASE WHEN条件表达式函数实现:

    CASE WHEN SCORE = 'A' THEN '优'
    WHEN SCORE = 'B' THEN '良'
    WHEN SCORE = 'C' THEN '中' ELSE '不及格' END
    THEN后边的值与ELSE后边的值类型应一致,否则会报错。如下:

    CASE SCORE WHEN 'A' THEN '优' ELSE 0 END
    '优'和0数据类型不一致则报错: 

    [Err] ORA-00932: 数据类型不一致: 应为 CHAR, 但却获得 NUMBER

    简单CASE WHEN函数只能应对一些简单的业务场景,而CASE WHEN条件表达式的写法则更加灵活。

    CASE WHEN条件表达式函数:类似JAVA中的IF ELSE语句。

    格式:

    CASE WHEN condition THEN result    [WHEN...THEN...]     ELSE result     END
    解释:condition是一个返回布尔类型的表达式,如果表达式返回true,则整个函数返回相应result的值,如果表达式皆为false,则返回ElSE后result的值,如果省略了ELSE子句,则返回NULL

     

    下面介绍几种常用场景:

    场景1:有分数score,score<60返回不及格,score>=60返回及格,score>=80返回优秀

    SELECT
    STUDENT_NAME,
    (CASE WHEN score < 60 THEN '不及格'
    WHEN score >= 60 AND score < 80 THEN '及格'
    WHEN score >= 80 THEN '优秀'
    ELSE '异常' END) AS REMARK    FROM     TABLE
     注意:如果你想判断score是否null的情况,WHEN score = null  THEN '缺席考试',这是一种错误的写法,正确的写法应为:

    CASE WHEN score IS NULL THEN '缺席考试' ELSE '正常' END
    场景2:现老师要统计班中,有多少男同学,多少女同学,并统计男同学中有几人及格,女同学中有几人及格,要求用一个SQL输出结果。

    表结构如下:其中STU_SEX字段,0表示男生,1表示女生。

    STU_CODE    STU_NAME    STU_SEX    STU_SCORE
    XM                  小明                 0                    88
    XL                   小磊                 0                    55
    XF                  小峰                  0                    45
    XH                 小红                   1                   66
    XN                  晓妮                  1                   77
    XY                  小伊                  1                   99
    SELECT 
        SUM (CASE WHEN STU_SEX = 0 THEN 1 ELSE 0 END) AS MALE_COUNT,
        SUM (CASE WHEN STU_SEX = 1 THEN 1 ELSE 0 END) AS FEMALE_COUNT,
        SUM (CASE WHEN STU_SCORE >= 60 AND STU_SEX = 0 THEN 1 ELSE 0 END) AS MALE_PASS,
        SUM (CASE WHEN STU_SCORE >= 60 AND STU_SEX = 1 THEN 1 ELSE 0 END) AS FEMALE_PASS
    FROM 
        THTF_STUDENTS
    输出结果如下:

    MALE_COUNT    FEMALE_COUNT    MALE_PASS    FEMALE_PASS
    3                            3                              1                          3
    场景3:经典行转列,并配合聚合函数做统计

    现要求统计各个城市,总共使用了多少水耗、电耗、热耗,使用一条SQL语句输出结果

    有能耗表如下:其中,E_TYPE表示能耗类型,0表示水耗,1表示电耗,2表示热耗

    E_CODE    E_VALUE     E_TYPE
    北京          28.50                 0
    北京          23.51                 1
    北京          28.12                 2
    北京         12.30                  0
    北京         15.46                  1
    上海         18.88                  0
    上海         16.66                  1
    上海         19.99                  0
    上海         10.05                  0
    SELECT 
        E_CODE,
        SUM(CASE WHEN E_TYPE = 0 THEN E_VALUE ELSE 0 END) AS WATER_ENERGY,--水耗
        SUM(CASE WHEN E_TYPE = 1 THEN E_VALUE ELSE 0 END) AS ELE_ENERGY,--电耗
        SUM(CASE WHEN E_TYPE = 2 THEN E_VALUE ELSE 0 END) AS HEAT_ENERGY--热耗
    FROM 
        THTF_ENERGY_TEST
    GROUP BY
        E_CODE
     输出结果如下:

    E_CODE    WATER_ENERGY    ELE_ENERGY    HEAT_ENERGY
    北京            40.80                         38.97                  28.12
    上海            48.92                         16.66                  0
    场景4:CASE WHEN中使用子查询

    根据城市用电量多少,计算用电成本。假设电能耗单价分为三档,根据不同的能耗值,使用相应价格计算成本。

     价格表如下:

    P_PRICE    P_LEVEL    P_LIMIT
    1.20              0                     10
    1.70              1                     30
    2.50              2                     50
    当能耗值小于10时,使用P_LEVEL=0时的P_PRICE的值,能耗值大于10小于30使用P_LEVEL=1时的P_PRICE的值...

    CASE WHEN energy <= (SELECT P_LIMIT FROM TABLE_PRICE WHERE P_LEVEL = 0) THEN (SELECT P_PRICE FROM TABLE_PRICE WHERE P_LEVEL = 0)
        WHEN energy > (SELECT P_LIMIT FROM TABLE_PRICE WHERE P_LEVEL = 0) AND energy <= (SELECT P_LIMIT FROM TABLE_PRICE WHERE P_LEVEL = 1) THEN (SELECT P_PRICE FROM TABLE_PRICE WHERE P_LEVEL = 1)
        WHEN energy > (SELECT P_LIMIT FROM TABLE_PRICE WHERE P_LEVEL = 1) AND energy <= (SELECT P_LIMIT FROM TABLE_PRICE WHERE P_LEVEL = 2) THEN (SELECT P_PRICE FROM TABLE_PRICE WHERE P_LEVEL = 2)

    CASE WHEN 函数使用起来简单易懂,此篇文章只作了简单的使用介绍,还需在实际工作中根据业务场景不同来灵活使用。

    展开全文
  • 文章目录SQL之CASE WHEN用法详解场景1:有分数score,score=60返回及格,score>=80返回优秀场景2:现老师要统计班,有多少男同学,多少女同学,并统计男同学有几人及格,女同学有几人及格,要求用一个SQL输出...
  • sql中case when还是比较常见的用法。经常会出现一段时间不用,相关写法与语法又记不太清楚的情况。干脆就记一下,以备不时之需。 1.准备数据 现在有一张表xxx,里面有一个字段叫basicinfo_credit_status,类型为整数...

    sql中case when还是比较常见的用法。经常会出现一段时间不用,相关写法与语法又记不太清楚的情况。干脆就记一下,以备不时之需。

    1.准备数据

    现在有一张表xxx,里面有一个字段叫basicinfo_credit_status,类型为整数,1,2,3,4,5这种。其中1表示授信通过,4表示授信拒绝。

    2.case的两种写法

    case一般有两种写法: 简单case函数和case搜索函数。

    简单case函数的写法如下

    case basicinfo_credit_status
    	when 1 then "pass"
    	when 4 then "reject"
    	else "other"
    end
    

    case搜索函数的写法如下

    case 
    when basicinfo_credit_status = 1 then "pass"
    when basicinfo_credit_status = 4 then "reject"
    else "other"
    end
    

    对照上面两种写法,不难看出其优缺点:
    简单case函数的写法比较简洁明了,能实现基本的功能与需求。
    搜索函数代码相对较为复杂,但是也能实现一些比较复杂的功能,比如复杂的判定逻辑。

    select basicinfo_credit_status,
     (case basicinfo_credit_status when 1 then "pass" when 4 then "reject" else "other" end) as status
      from xxx limit 20;
    
    +--------------------------+---------+--+
    | basicinfo_credit_status  | status  |
    +--------------------------+---------+--+
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 2                        | other   |
    | 1                        | pass    |
    | 1                        | pass    |
    | 3                        | other   |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 2                        | other   |
    | 3                        | other   |
    | 1                        | pass    |
    | 1                        | pass    |
    +--------------------------+---------+--+
    
    select basicinfo_credit_status, 
    (case when basicinfo_credit_status = 1 then "pass" when basicinfo_credit_status = 4 then "reject" else "other" end) as status 
    from xxx limit 20;
    
    +--------------------------+---------+--+
    | basicinfo_credit_status  | status  |
    +--------------------------+---------+--+
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 2                        | other   |
    | 1                        | pass    |
    | 1                        | pass    |
    | 3                        | other   |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 1                        | pass    |
    | 2                        | other   |
    | 3                        | other   |
    | 1                        | pass    |
    | 1                        | pass    |
    +--------------------------+---------+--+
    
    

    3.分段统计

    case语句经常与sum语句一起使用,可以实现分段统计的功能。
    比如我们需要统计授信通过的人数是多少,授信未通过的人数是多少,可以用如下sql语句。

    select 
    sum(case when basicinfo_credit_status = 1 then 1 else 0 end) as is_credit_pass,
    sum(case when basicinfo_credit_status = 4 then 1 else 0 end) as is_credit_reject 
    from xxx;
    

    最后可以得到结果

    +-----------------+-------------------+--+
    | is_credit_pass  | is_credit_reject  |
    +-----------------+-------------------+--+
    | num1         | num2          |
    +-----------------+-------------------+--+
    
    
    展开全文
  • SQL之CASE WHEN用法详解

    万次阅读 多人点赞 2018-08-30 14:43:02
    简单CASE WHEN函数: CASE SCORE WHEN 'A' THEN '优' ELSE '不及格' END ...CASE SCORE WHEN 'C' THEN '' ELSE '不及格' END 等同于,使用CASE WHEN条件表达式函数实现: CASE WHEN SCORE = 'A'...
  • case when语句(SQL)多种用法

    万次阅读 2018-07-11 11:07:15
    case具有两种格式。简单case函数和case搜索...--比如说,下面这段sql,你永远无法得到“第二类”这个结果 case when col_1 in ('a','b') then '第一类' when col_1 in ('a') then '第二类' else '其他' end  
  • SQL语句 CASE WHEN的用法

    万次阅读 2019-06-03 11:53:59
    select Id , case when Id=1 then '等于1' when Id >=60 then '大于60' --注意各结果的数据类型须一致,int和时间等不能转为字符串没出错 when Id <60 then '小于60' else 'ok' end ...
  • 可能有很多人根本就不用Check,那么我建议你在看过下面的例子之后也尝试一下在SQL中使用Check。  下面我们来举个例子  公司A,这个公司有个规定,女职员的工资必须高于1000块。如果用Check和Case来表现的话,...
  • sql casewhen

    2018-03-15 14:02:02
    CASE WHEN 及 SELECT CASE WHEN的用法 Case具有两种格式。简单Case函数和Case搜索函数。简单Case函数CASE sexWHEN '1' THEN '男'WHEN '2' THEN '女'ELSE '其他' END --Case搜索函数 CASE WHEN ...
  • sqlserver case when 的用法

    千次阅读 2018-12-27 14:18:16
    1.case when 的用法 (1)简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END (2)--Case搜索函数  CASE WHEN sex = '1' THEN '男'  WHEN sex = '2' THEN '女'  ELSE '...
  • casewhen简单用法—改变结果 SELECT CASE id WHEN 21 THEN ...casewhen复杂用法—执行不同的sql SELECT ( CASE WHEN a.id = 21 THEN ( SELECT id FROM hrmresource WHERE id IN ( 21
  • 2.判断用法 SELECT predetermine_id, (CASE(a.effective_time > NOW()) WHEN 0 THEN 0 ELSE 1 END) effectiveStatus FROM jq_predetermine a 3.–简单case函数 case sex when '1' then '男' when '2' ...
  • SQL Server case when 的用法

    千次阅读 2018-09-13 17:58:50
    第一种用法 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END 第二种用法 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END
  • SQL case when 的几种用法

    千次阅读 2019-08-05 15:13:26
    SQL case when 的两种用法 第一种:case用于实现简单的"等于"判断。 比如数据库里的某个字段(VoucherClass)记录着不同的单据类型,比如数据库里显示1、2、3;1代表的是进货单;2代表的是退货单;3代表的是出库单;...
  • SqlServer Like 带参 与 In带参的用法

    千次阅读 2017-02-20 11:23:48
    Like带参 商品表Commodity,@Remark2的值直接是字符串 string remark2=”测试商品” Select CommodityId,Price,CommodityName,CommodityCode From Commodity Where Disabled=@Disabled1 And Remark like '%'+@...
  • 以下面的表为例: ...用法:case when 字段 = '值1' then '结果1' when 字段 = '值2' then '结果2' else '结果3' end 实例: select name,fightnum,skill, (case when fightnum = 20000 then '神级' ...
  • sql语句之case when null 解决方法
  • SQl CASE WHEN 语句的嵌套使用方式

    千次阅读 2020-06-18 14:56:18
    select id,userid, ys, case when pj_ys is NULL then ( case when pj_ys1 is NUll then ys else pj_ys1 end) else pj_ys end t from dbo.tbl_Emplyeeblogs ...
  • 30. Spark SQL case when用法

    千次阅读 2019-11-11 09:45:59
    30. Spark SQL case when用法: https://sparkbyexamples.com/spark-case-when-otherwise-example/ ...
  • sql 的case when语句

    2020-09-26 10:57:44
    题目若要求按条件更换列的内容,“条件”我们想到的是sql里的case表达式,下面以LeetCode的题目讲解case…when…的具体用法。 UPDATE salary SET sex = CASE sex WHEN 'm' THEN 'f' ELSE 'm' END; ...
  • SQL语句CASE WHEN的使用实例

    万次阅读 多人点赞 2015-06-08 14:58:39
    SQL中的CASE使用方法 Case具有两种格式。简单Case函数和Case搜索函数。  --简单Case函数 CASE sex  WHEN '1' THEN '男'  WHEN '2' THEN '女' ELSE '其他' END (注释:列名,这里是sex,如果放在case后...
  • sql语句之case when的用法

    千次阅读 2021-01-27 17:24:40
    当需要从数据源上直接判断数据显示带不动含义的时候,就可以在SQL语句中使用case when 函数。 语法如下: Case具有两种格式。简单Case函数和Case搜索函数。 简单Case函数格式: CASE 列名 WHEN 条件值1 THEN 选项1 ...
  • SQl判断语句:CASE WHEN与IF (一)Case具有两种格式:简单Case函数和Case搜索函数。 写法一:简单Case函数: CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘0’ THEN ‘女’ ELSE ‘其他’ END 例:select *,(case 班级 ...
  • SQL语句条件判断之case when基本用法

    千次阅读 2020-12-09 14:18:24
    本文将介绍SQL条件判断关键字case when的基本用法 基本语法 case x when y then z else m end 乍一看看不懂没关系,我们把它拆分开解释 case x 意思就是设置一个参数,x可以是一个数据库字段,也可以是一个dao层传递的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 658
精华内容 263
关键字:

sql中casewhen的用法