共计 1770 个字符,预计需要花费 5 分钟才能阅读完成。
case when 语句,用于计算条件列表并返回多个可能结果表达式之一。
CASE 具有两种格式:
1、简单 case 函数:
case input_expression
when when_expression then result_expression
[ ...n ]
[
else else_result_expression
end
2、case 搜索函数:
case
when Boolean_expression then result_expression
[ ...n ]
[
esle else_result_expression
end
参数:
input_expression
是使用简单 CASE 格式时所计算的表达式。Input_expression 是任何有效的 SQL 表达式。
when when_expression
使用简单 CASE 格式时 input_expression 所比较的简单表达式。when_expression 是任意有效的 SQL 表达式。input_expression 和每个 when_expression 的数据类型必须相同,或者是隐性转换。
[…n]占位符
可以使用多个 when when_expression then result_expression 子句或 WHEN boolean_expression THEN result_expression 子句
then result_expression
当 input_expression = when_expression 取值为 true,或者 boolean_expression 取值为 true 时返回的表达式。
result expression 是任意有效的 sql 表达式。
esle else_result_expression
当比较运算取值不为 TRUE 时返回的表达式。如果省略此参数并且比较运算取值不为 TRUE,CASE 将返回 NULL 值。else_result_expression 是任意有效的 sql 表达式。Else_result_expression 和所有 result_expression 的数据类型必须相同,或者必须是隐性转换。
when Boolean_expression
使用 case 搜索格式时所计算的布尔表达式。boolean_expression 是任意有效的布尔表达式。
结果类型
从 result_expressions 和可选 else_result_expression 的类型集合中返回最高的优先规则类型
创建要操作函数使用的表:
drop table if exists test_list;
create table test_list(id int primary key auto_increment comment 'id 自增',
age int not null comment'年龄',
name varchar(225) not null,
sex int not null default '1' comment'性别 1 男,2 是女'
)engine=MyISAM default charset=utf8 comment'测试查询函数表';
insert into test_list values(1,10,'张一 ',1),(2,15,' 张二 ',2),(3,20,' 张三 ',1),(4,25,' 张四 ',2),(5,30,' 张五',1);
简单 case 函数实例:
-- 统计年龄, 姓名条件的
select count(case age when 10 then age else null end) as age_num,count(case name when '张五' then name end) as name_num from test_list;
case 搜索函数实例:
-- 统计年龄, 姓名条件的
select count(case when age between 10 and 30 then age else null end) as age_num,count(case when name='张五' then name end) as name_num from test_list;
排序使用 case when 搜索函数:
-- case 排序
select * from test_list order by case when age>10 then sex end desc;
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-08/146503.htm