MySQL 使用 IF 判断是否执行 SQL
本文最后更新于:2020年12月30日 凌晨
语法if(condition, value_if_true, value_if_false)
上面的三个参数的意思是,如果 condition
(表达式)为 true
,则执行表达式 value_if_true
,否则执行表达式 value_if_false
。
例如有下面这个 User
用户表:
1 |
|
一个简单的根据属性查询列表的 SQL 语句大致如下:
1 |
|
那么,现在问题来了。我们有一个需求就是如果性别为空,就查询全部的性别,否则就根据性别进行查询。这时就可以使用 if 来进行判断了(吾辈的某位同事就是碰到了这个坑。。。),如果 condition
(sex = null
) 为 true
,就直接执行表达式 value_if_true
(true
),否则执行 value_if_false
(sex = ?
)。
1 |
|
注:这里不要使用
1 = 1
而直接使用true
就好了。
PS:这难道就是所谓的习惯成自然么。。。
附:诚然,在使用了 ORM 框架(例如 Mybatis 后),基本上都可以对传入的参数进行判空处理,然而有时候会出现一种情况:
某个属性经由其他属性统合计算而得到,并非是实体(或是其他的什么)传入进来的参数,那便是只能使用 SQL 的原生语法了呢
MySQL 使用 IF 判断是否执行 SQL
https://blog.rxliuli.com/p/84c23dd0034c4dfaa803e2845852ab09/