SQL中的case then的使用(select、update、insert、delete中各自使用)
文章目录
- 1. 前言
- 2. 先说结论
- 1. case then格式写法:
- 2. case then在 crud的写法
- 3. 举例子
- 1. 前提准备
- 2. select 中使用
- 3. insert 中使用
- 4. update 中使用
- 5. delete 中使用
- 4. 总结
1. 前言
- 在工作一段时间后发现,有时候有些事情可以让SQL帮我们做好,并不用傻傻把数据拿到java内存中,再用java进行处理,总结就是:能用一条SQL解决的事情,为什么还要在java程序做过多的处理。
- 而写SQL的时候,发现sql中的case then也挺好用的,于是把case then的在各个crud中的如何进行操作给记录下来。
2. 先说结论
1. case then格式写法:
```sql
// 第一种写法
CASE
WHEN 列名 = 条件值 THEN 值1
WHEN 列名 = 条件值2 THEN 值2
WHEN 列名 = 条件值3 THEN 值3
ELSE 值4 END// 第二种写法 可以把列名取出,这种情况用于只有一个列名作为条件的情况
CASE 列名
WHEN 条件值 THEN 值1
WHEN 条件值2 THEN 值2
WHEN 条件值3 THEN 值3
ELSE 值4 END// 第三种写法,可以无需ELSE 但要求一定会满足WHEN其中一条,否则可能就是NULL了
CASE
WHEN 列名 = 条件值 THEN 值1
WHEN 列名 = 条件值2 THEN 值2
WHEN 列名 = 条件值3 THEN 值3
END
```
2. case then在 crud的写法
select name,sex,case when age >= 18 then '成年人'else '未成年'end age
from peopleinsert into people(name,sex,age,hobby)
values('小刚','男','18',case when '男'='男' then '打篮球' end);update people set hobby = (case when #{A} = 1 then '跳绳' when #{A} = 2 then '打篮球' else hobby end)
where 其他条件;delete people where age = (case when #{A} = 'eighteen' then '18' when #{A} = 'seventeen' then '17'end);
3. 举例子
1. 前提准备
先准备好数据(我使用oracle数据库,由于本人电脑无安装数据库,使用支持在线写SQL的Oracle学习免费网站)
CREATE TABLE people (name varchar2(200),sex varchar2(200),age varchar2(200),hobby varchar2(200) ); INSERT INTO people VALUES ('小明', '男', '18',''); INSERT INTO people VALUES ('小红', '女', '17','');
2. select 中使用
查询出people表中全部数据,并age大于等于18输出为成年人,小于18输出未成年。
select name,sex,case when age >= 18 then '成年人'else '未成年'end age from people
3. insert 中使用
在使用mybatis的使用,通常都是会将值传入给SQL中,有时候可以根据传入的值设置其他字段的值。
如下:插入两条数据,如果性别是男生的话,全部hobby都写入打篮球。
// 解析一下,在myabtis中如下: insert into people(name,sex,age,hobby) values(#{name},#{sex},#{age},case when #{sex}='男' then '打篮球' end);insert into people(name,sex,age,hobby) values('小刚','男','18',case when '男'='男' then '打篮球' end);insert into people(name,sex,age,hobby) values('小紫','女','18',case when '女'='男' then '打篮球' end);select * from people
4. update 中使用
将全部性别为女的爱好都设置为跳绳。
// 这里意思: 设置表people中hobby字段, // 如果性别是女,则hobby字段设置为跳绳, // 否则就使用本身表hobby字段的值进行更新,即保持原来表中的值 update people set hobby = (case when sex = '女' then '跳绳' else hobby end);
// 当然上述的sql可以转化为: update people set hobby = '跳绳' where sex = '女';// 想必大家肯定是使用第二种的sql书写,原因是这里的条件刚刚好是表里面字段内容 // 如果 java代码中,传入的参数不是sex,而是其他的,比如: // 传入A,如果A=1则hobby更新为跳绳,A=2则hobby更新为打篮球 update people set hobby = (case when #{A} = 1 then '跳绳' when #{A} = 2 then '打篮球' else hobby end) where 其他条件;
5. delete 中使用
其实在delete中比较少使用case then,毕竟条件都可以写到where 里面了,当然也是少不了,跟我上述update例子中解释的,可能传入的参数完全跟表对不上情况:
传入参数A,如果是eighteen删除年龄是18岁的人,如果是seventeen删除年龄是17岁的人
delete people where age = (case when #{A} = 'eighteen' then '18' when #{A} = 'seventeen' then '17'end);
4. 总结
- case then 其实就是相当于java中的if else语句
- 使用case then主要是解决一些多种情况的选择。
- 一般其实不建议使用这样子的sql语句,毕竟会使sql具有唯一性,且带有写死的字符串。
- 但有时候这样子操作确实会实现功能非常简单的话,就得掂量掂量一下。
SQL中的case then的使用(select、update、insert、delete中各自使用)相关推荐
- SQL server触发器中 update insert delete 分别给写个例子被。
SQL server触发器中 update insert delete 分别给写个例子以及解释下例子的作用和意思被, 万分感谢!!!! 主要想知道下各个语句的书写规范. INSERT: 表1 (ID, ...
- oracle中update,insert,delete的高级用法
一.对视图的更新. update,insert,delete除了可以作用于单表,还可以作用于视图.子查询,但是有种种限制. 视图(子查询)的限制: 1.没有集合操作符(并.差.交): 2.没有DI ...
- mysql中怎么查表中的数据_[MySQL] 用select查询数据表中的记录
用select查询数据表中的记录 select 语句的基本语法如下: select selection_list 选择那些列 from table_list 从那个表去选择行 where primar ...
- Sql Server where case 满足条件执行 不满足 不做任何条件查询
sql 里经常用的where语句中可以使用case when 常用的 select * from tb where a= case when b>0 and b<100 then 1 wh ...
- GBase 8s SQL 指南:教程———6编写高级SELECT语句
6编写高级SELECT语句 本章中增大了使用SELECT语句可执行的操作的范围.并使您能够执行更复杂的数据库查 询和数据处理.编写SELECT语句着重于SELECT语句语法中的五个子句.本章添加了 G ...
- python中case的用法_python中Switch/Case实现的示例代码
python 的 python中Switch/Case实现的示例代码 学习Python过程中,发现没有switch-case,过去写C习惯用Switch/Case语句,官方文档说通过if-elif实现 ...
- SQL中的case when then else end用法
2019独角兽企业重金招聘Python工程师标准>>> Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sexWHEN '1' THEN ...
- mysql能用case嵌套sql吗,关于sqlserver中查询语句中嵌套case语句使用方法
ryxxlong的博客 Sql server 中的 CASE 语句文章, 链接 http://ryxxlong.iteye.com/blog/531221 写的比较详细,具体内容如下,主要用于自己以后 ...
- SQL中的CASE WHEN语句
有这样一道面试题: 一张表数据如下 1900-1-1 胜 1900-1-1 胜 1900-1-1 负 1900-1-2 胜 1900-1-2 胜 写出一条SQL语句,使检索结果如下: 胜 负 1900 ...
- SQL中的CASE WHEN用法
SQL中Case的使用方法 Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ...
最新文章
- 拿下两个世界第一,阿里人机对话模型成人工智能国际通用标准
- 3台廉价服务器支撑200万TPS的消息中间件
- 据库专家Michael Stonebraker获得2014年图灵奖
- Hadoop三大核心组件及需求催生大数据技术的背景
- php 数组是否属于迭代器,数组的迭代器属性Iterator介绍
- git冲突Please move or remove them before you can merge
- Docker:集装箱式“运输”在软件上的实现
- android 跳转动画黑屏,Android8.0 适配解决页面跳转过程出现短暂黑屏的问题
- C/C++语言以某符号分割字符串
- hadoop hdfs 集群模板机配置
- Linux yum软件仓库配置,linux配置软件仓库 、 yum管理应用软件 、 快速部署Web/FTP...
- wordpress 如何移除管理后台仪表盘小工具
- mybatis SqlSessionDaoSupport的使用(附代码下载)(转)
- 能ping通,TCP就一定能连通吗?
- 深入浅出MFC第二章笔记
- 土方回填施工方案范本_土方回填施工方案范本
- 编码规范 SonarQube检测出的bug、漏洞以及异味的修复整理
- 没有CCTV-5也不用慌的世界杯观战指南
- brew upgrade出现It seems there is already an App at的解决方法
- 浅谈微信小程序对于创业者,意味着什么?