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语句:
SELECT (CASE
		WHEN THIRDSYSTIME=20180511 THEN '昨天'
		WHEN THIRDSYSTIME=20180512 THEN '今天'
	 ELSE '未知时间'
	 END) 交易时间,
	AMOUNT  AS 交易金额,AUTHORCODE  AS 交易码, FEE  AS 手续费,SYSSERNO AS 系统跟踪号
	FROM T_CPS_CUPSICACINFO;
SELECT (CASE THIRDSYSTIME
		WHEN 20180511 THEN '昨天'
		WHEN 20180512 THEN '今天'
		ELSE '未知时间'
	 END) 交易时间,
	AMOUNT  AS 交易金额,AUTHORCODE  AS 交易码, FEE  AS 手续费,SYSSERNO AS 系统跟踪号
	FROM T_CPS_CUPSICACINFO;
结果:
不带else子句:
SELECT (CASE
		WHEN THIRDSYSTIME=20180511 THEN '昨天'
		WHEN THIRDSYSTIME=20180512 THEN '今天'
	 END) 交易时间,
	AMOUNT  AS 交易金额,AUTHORCODE  AS 交易码, FEE  AS 手续费,SYSSERNO AS 系统跟踪号
	FROM T_CPS_CUPSICACINFO;
SELECT (CASE THIRDSYSTIME
		WHEN 20180511 THEN '昨天'
		WHEN 20180512 THEN '今天'
	 END) 交易时间,
	AMOUNT  AS 交易金额,AUTHORCODE  AS 交易码, FEE  AS 手续费,SYSSERNO AS 系统跟踪号
	FROM T_CPS_CUPSICACINFO;

结果:

If语句语法:

If(条件表达式)

Then  [语句块或者sql]

Else  [语句块或者sql]

End if

1:if或者else区可以嵌套多个if语句,没有嵌套限制,也可以只有if区而不带else区
2:if用于存储过程及函数中
CREATE PROCEDURE `pro1`(out v_result VARCHAR(10))
 BEGIN
     if ((select count(THIRDSYSTIME) from T_CPS_CUPSICACINFO where THIRDSYSTIME='20180511')<=5)
     then set v_result='昨天交易笔数小于5';
     else set v_result='昨天交易笔数大于5';
     end if;
 end

猜你喜欢

转载自blog.csdn.net/tangmingxin0529/article/details/80290171
今日推荐