1.CASE 函数、
简答case函数:
计算测试表达式,按从上到下的书写顺序将测试表达式的值与每个WHEN子句的简单表达式进行比较。如果某个简单表达式的值与测试表达式的值相等,则返回第一个与之匹配的when 子句所对应的结果表达式的值。如果所有简单表达式的值与测试表达式的值都不相等,若指定了else子句,则返回else子句中指定的结果表达式的值;若没有指定else子句,则返回null。
case 测试表达式 when 简单表达式1 then 结果表达式1 when 简单表达式2 then 结果表达式2... when 简单表达式n then 结果表达式n else 结果表达式n+1 end --示例: select 班号,班名, case 系号 when 1 then '软件工程系' when 2 then '计算机系' when 3 then '物联网系' end as 系号 ,班主任号 from 班级表
搜索case函数:
按从上到下的书写顺序计算每个WHERE子句的布尔表达式。返回第一个取值为true的布尔表达式所对应的值。如果没有取值为true的布尔表达式,则当指定了else 子句时,返回else子句中指定的结果;如果没有指定else子句,则返回null。
case when 布尔表达式1 then 结果表达式1 when 布尔表达式2 then 结果表达式2... when 布尔表达式n then 结果表达式n else 结果表达式n+1 end --示例: select 班号,班名 case when 系号=1 then '软件工程系' when 系号=2 then '计算机系' when 喜好=3 then '物联网系' end as 系号,班主任号 from 班级表
例:
(1)统计班男生和女生的数量各是多少,统计结果的标头为,班号,男生数量,女生数量。
select 班号 count (case when 性别='男' then '男' end) 男生数, count (case when 性别='女' then '女' end) 女生数, from 学生表 group by 班号
(2)判断成绩的等级,85-100为“优”,70-84为“良”,60-69为“及格”,60以下为“不及格”,并统计每一等级的人数
select case when grade between 85 and 100 then '优' when grade between 70 and 84 then '良' when grade between 60 and 69 then '及格' else '不及格' end 等级,count(*) 人数 from SC group by 等级;
2. INTERVAL
(1) 当 interval 作为一个函数是, 它被当做一个比较函数, 即 interval(), 如 interval(4,0,1,2,3,4,5,6), 则在函数中,第一个数 4 作为被比较数, 后面的0,1,2,3,4,5,6 为比较数, 然后将后面的数字依次与4进行比较, 返回小于等于4 的个数, 所以上述结果为5 , 注意,只有将4 后面的数字从小到大进行排列, interval 函数才能正常使用, 若排序混乱, 可以使用,但会影响最终结果
(2)interval 最为关键字时
当 interval 作为一个关键字时, 表示时间间隔, 常用在 date_add(), data_sub()函数中,常用时间的加减法. 查询当前时间之前2 小时的日期: select now () - interval 2 hours;