概述:
sql语句中的case语句与高级语言中的switch语句,是标准sql的语法,适用于一个条件判断有多种值的情况下分别执行不同的操作。
首先,让我们看一下CASE的语法。在一般的SELECT中,其语法格式如下:
CASE <单值表达式>
WHEN <表达式值> THEN <SQL语句或者返回值>
WHEN <表达式值> THEN <SQL语句或者返回值>
...
WHEN <表达式值> THEN <SQL语句或者返回值>
ELSE <SQL语句或者返回值>
END
★ 第一部分
# 创建一个用户表
CREATE TABLE `user` (
`id` int(10) unsigned NOT NULL auto_increment,
`sex` tinyint(1) default 1 COMMENT '性别:0女;1男;2保密',
`age` int(3) default 1 COMMENT '年龄',
`province` char(254) default NULL COMMENT '所在省份',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
# 向表中插入测试数据
INSERT INTO user(sex,age,province) VALUES
('1','22','北京'),
('0','25','广东'),
('0','56','天津'),
('1','14','北京'),
('0','36','广东'),
('1','68','湖南'),
('1','45','北京'),
('1','17','河北'),
('2','33','天津'),
('1','27','湖南'),
('1','29','北京'),
('2','70','广东'),
('0','24','北京')
数据表如下图:
------------------------------------------------------------------------------------------
实验1.1:将用户性别用文字直观显示
1.简单Case函数写法(注意sex的位置)
select *,(CASE sex WHEN '1' THEN '男' WHEN '0' THEN '女' ELSE '保密' END) as sex_text
from user
2.Case搜索函数写法(注意sex的位置【推荐】)
select *,(CASE WHEN sex='1' THEN '男' WHEN sex='0' THEN '女' ELSE '保密' END) as sex_text
from user