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]
- 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子句:
[sql]
- 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用于存储过程及函数中
[sql]
- 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
登录 | 立即注册