(九)控制流函数
1、IF (expr, value1, value2)
功能:expr 为 TRUE ,则 IF 的返回值为 value1;否则返回值为 value2;
【示例】
SELECT country1, country2, R1, R2, if( R1 > R2, '胜', if(R1=R2, '平', '负') )结果
FROM worldcup;
【执行结果】
| country1 | country2 | R1 | R2 | 结果 |
|---|---|---|---|---|
| 俄罗斯 | 沙特 | 5 | 0 | 胜 |
| 埃及 | 乌拉圭 | 0 | 1 | 负 |
| 摩洛哥 | 伊朗 | 0 | 1 | 负 |
| 葡萄牙 | 西班牙 | 3 | 3 | 平 |
| 法国 | 澳大利亚 | 2 | 1 | 胜 |
| 阿根廷 | 冰岛 | 1 | 1 | 平 |
| 秘鲁 | 丹麦 | 0 | 1 | 负 |
| 克罗地亚 | 尼日利亚 | 2 | 0 | 胜 |
| 哥斯达黎加 | 塞尔维亚 | 0 | 1 | 负 |
| 德国 | 墨西哥 | 0 | 1 | 负 |
2、IFNULL(expr1,expr2)
功能:如果 expr1 不为 NULL,返回值为 expr1,否则其返回值为 expr2;
SELECT IFNULL(country,'未知')RESULT FROM worldcup;
(1) 如果换成 CASE WHEN:
SELECT (CASE WHEN country IS NULL THEN‘未知’ELSE country END) FROM worldcup;
(2) 如果换成 NVL 函数:
SELECT NVL(country, '未知') FROM worldcup;
(3) 如果换成 IF 函数:
SELECT IF(country is null, '未知', country) FROM worldcup;
3、DECODE ( 字段名,值1,翻值1,值2,翻译值2,…值n,翻译值n,缺省值 )
功能:将查询结果翻译成其他值。类似于:CASE WHEN … THEN 表达式。字段值分别和值1到值n匹配,若没有匹配任何值,返回缺省值。
# 示例:统计世界杯国家胜负场次。result(积分)为3就是胜场,积分 0 就是负场
SELECT country1, sum(decode(result,3,1,0)) 胜, sum(decode(result,0,1,0)) 负
FROM worldcup GROUP BY country1 ORDER BY 胜 desc,负 asc;
执行结果:
| country1 | 胜 | 负 |
|---|---|---|
| 法国 | 5 | 0 |
| 比利时 | 4 | 0 |
| 克罗地亚 | 3 | 0 |
| 俄罗斯 | 3 | 2 |
| 巴西 | 2 | 1 |
| 瑞典 | 2 | 1 |
| 沙特 | 1 | 0 |
| 葡萄牙 | 1 | 0 |
| 德国 | 1 | 1 |
| 尼日利亚 | 1 | 1 |
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




