JobPlus知识库 IT 大数据 文章
SQL语句CASE与IF

Case:根据一个条件的状态实现逻辑的分支,可用于查询语句中

1:简单case语句用于根据一个字面值进入某个逻辑

2:搜索型case语句用于根据一个表达式的值进入某个逻辑

简单case语句

Case 字段

When 表达式B/值 then 结果B

When 表达式C/值 then 结果C

Else 结果D

End

说明:计算表达式A的值,与每一个when后面的表达式的值比较,若相等,则返回对应的结果,否则返回else的结果。

表达式A与when后表达式的数据类型必须相同,或者可隐形转换

搜索型case语句

Case

When 布尔表达式A then 结果A

When 布尔表达式B then 结果B

Else 结果C

End


说明:按顺序计算布尔表达式的值,为true则返回对应的结果,若结果都为false则返回else对应的结果,如果没有else子句,则返回null


SELECT  

    THIRDSYSTIME AS 交易时间,AMOUNT  AS 交易金额,AUTHORCODE  AS 交易码, FEE  AS 手续费,SYSSERNO AS 系统跟踪号  


FROM T_CPS_CUPSICACINFO;


带else语句:

[sql] 

  1. SELECT (CASE  
  2.         WHEN THIRDSYSTIME=20180511 THEN '昨天'  
  3.         WHEN THIRDSYSTIME=20180512 THEN '今天'  
  4.      ELSE '未知时间'  
  5.      END) 交易时间,  
  6.     AMOUNT  AS 交易金额,AUTHORCODE  AS 交易码, FEE  AS 手续费,SYSSERNO AS 系统跟踪号  
  7.     FROM T_CPS_CUPSICACINFO;  
  8. SELECT (CASE THIRDSYSTIME  
  9.         WHEN 20180511 THEN '昨天'  
  10.         WHEN 20180512 THEN '今天'  
  11.         ELSE '未知时间'  
  12.      END) 交易时间,  
  13.     AMOUNT  AS 交易金额,AUTHORCODE  AS 交易码, FEE  AS 手续费,SYSSERNO AS 系统跟踪号  
  14.     FROM T_CPS_CUPSICACINFO;  

结果:

不带else子句:


[sql] 

  1. SELECT (CASE  
  2.         WHEN THIRDSYSTIME=20180511 THEN '昨天'  
  3.         WHEN THIRDSYSTIME=20180512 THEN '今天'  
  4.      END) 交易时间,  
  5.     AMOUNT  AS 交易金额,AUTHORCODE  AS 交易码, FEE  AS 手续费,SYSSERNO AS 系统跟踪号  
  6.     FROM T_CPS_CUPSICACINFO;  
  7. SELECT (CASE THIRDSYSTIME  
  8.         WHEN 20180511 THEN '昨天'  
  9.         WHEN 20180512 THEN '今天'  
  10.      END) 交易时间,  
  11.     AMOUNT  AS 交易金额,AUTHORCODE  AS 交易码, FEE  AS 手续费,SYSSERNO AS 系统跟踪号  
  12.     FROM T_CPS_CUPSICACINFO;  


结果:


If语句语法:

If(条件表达式)

Then  [语句块或者sql]

Else  [语句块或者sql]

End if


1:if或者else区可以嵌套多个if语句,没有嵌套限制,也可以只有if区而不带else区

2:if用于存储过程及函数中

[sql]

  1. CREATE PROCEDURE `pro1`(out v_result VARCHAR(10))  
  2.  BEGIN  
  3.      if ((select count(THIRDSYSTIME) from T_CPS_CUPSICACINFO where THIRDSYSTIME='20180511')<=5)  
  4.      then set v_result='昨天交易笔数小于5';  
  5.      else set v_result='昨天交易笔数大于5';  
  6.      end if;  
  7.  end  


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏支持
309人赞 举报
分享到
用户评价(0)

暂无评价,你也可以发布评价哦:)

扫码APP

扫描使用APP

扫码使用

扫描使用小程序