sql中的case when的使用

sql中的case when的使用

1.测试建表脚本

CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(128) NOT NULL DEFAULT '' COMMENT '用户名',
  `gender` char(1) NOT NULL DEFAULT '' COMMENT '性别',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='用户表';

INSERT INTO `user` VALUES (1,'root1','男'),(2,'root2','男'),(3,'root3','女'),(4,'root4','女'),(5,'root5','0');

2.case when具体使用

表中原有数据

MariaDB [test]> select  t1.id,t1.username , t1.gender from user t1;
+----+----------+--------+
| id | username | gender |
+----+----------+--------+
|  1 | root1    | 男     |
|  2 | root2    | 男     |
|  3 | root3    | 女     |
|  4 | root4    | 女     |
|  5 | root5    | 0      |
+----+----------+--------+
5 rows in set (0.000 sec)

Case具有两种格式:简单Case函数和Case搜索函数。

显然,简单Case函数生在简洁,但是它只适用于这种单字段的单值比较,而Case搜索函数的优点在于适用于所有比较的情况。

# 简单Case函数
MariaDB [test]> select t1.id , t1.username , case when t1.gender='男' then 1 when t1.gender='女' then 2 else '未知' end as 性别 from user t1;
+----+----------+------+
| id | username | 性别 |
+----+----------+------+
|  1 | root1    | 1    |
|  2 | root2    | 1    |
|  3 | root3    | 2    |
|  4 | root4    | 2    |
|  5 | root5    | 未知 |
+----+----------+------+
5 rows in set (0.000 sec)

# Case搜索函数。
MariaDB [test]> select t1.id , t1.username , case t1.gender when '男' then 1  when '女' then 2 else '未知' end as 性别 from user t1;
+----+----------+------+
| id | username | 性别 |
+----+----------+------+
|  1 | root1    | 1    |
|  2 | root2    | 1    |
|  3 | root3    | 2    |
|  4 | root4    | 2    |
|  5 | root5    | 未知 |
+----+----------+------+
5 rows in set (0.000 sec)

3.总结

这两种方式,可以实现相同的功能。简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判定式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值