mysql - 条件判断

本文深入讲解了在LeetCode数据库题目中使用SQL的IF语句和CASE WHEN语句进行条件判断的方法,通过具体实例展示了如何根据不同部门分配不同地点的场景。

我在做LeetCode的数据库题的时候,遇到使用条件判断才能解出答案,一时间忘了,所以总结下知识点
if 语句使用模板

# if(a="b",x,y) 如果a 是b的话,返回x,否则返回y,类似Java的三元表达式
select * 
if(表达式,值1,值2) 
from table
where 
case
	when 表达式 thenwhen 表达式 thenwhen 表达式 thenelseend

eg:

# sales部门去P1地点
# account部门去P2地点
# research部门去P3地点
select 
	e.empno,e.ename,
	case
		when d.dname="sales" then "P1"
		when d.dname="account" then "P2"
		when d.dname="research" then "P3"
	end as place
from t_emp e join t_dept on e.deptno=d.deptno; 
### MySQL 条件判断的使用方法 在MySQL中,条件判断主要通过内置的条件判断函数来实现,这些函数可以用于查询、更新或其他操作中的逻辑控制。以下是几种常用的条件判断函数及其用法: #### 1. IF 函数 `IF(expr, v1, v2)` 是 MySQL 中最常用的条件判断函数之一。如果表达式 `expr` 的值为 `TRUE`(即非零且非空),则返回 `v1`;否则返回 `v2`[^4]。 **示例代码:** ```sql SELECT IF(10 > 5, '大于', '小于或等于') AS result; ``` 上述语句会返回 `'大于'`,因为条件 `10 > 5` 为真。 #### 2. CASE 表达式 `CASE` 是一种更灵活的条件判断方式,适用于复杂的多分支逻辑。它有两种形式:简单 CASE 和搜索 CASE。 - **简单 CASE**: 根据一个表达式的值与多个可能值进行匹配。 **示例代码:** ```sql SELECT CASE grade WHEN 'A' THEN '优秀' WHEN 'B' THEN '良好' ELSE '其他' END AS evaluation FROM students; ``` - **搜索 CASE**: 根据多个条件逐一判断,直到找到匹配的条件为止。 **示例代码:** ```sql SELECT CASE WHEN score >= 90 THEN '优秀' WHEN score >= 70 THEN '良好' ELSE '及格' END AS evaluation FROM students; ``` #### 3. IFNULL 函数 `IFNULL(expr1, expr2)` 用于判断第一个参数是否为 NULL。如果 `expr1` 为 NULL,则返回 `expr2`;否则返回 `expr1`[^4]。 **示例代码:** ```sql SELECT IFNULL(NULL, '默认值') AS result; ``` 上述语句会返回 `'默认值'`,因为第一个参数为 NULL。 #### 4. NULLIF 函数 `NULLIF(expr1, expr2)` 用于比较两个表达式。如果它们相等,则返回 NULL;否则返回 `expr1`[^4]。 **示例代码:** ```sql SELECT NULLIF(10, 10) AS result; ``` 上述语句会返回 `NULL`,因为两个参数相等。 #### 5. COALESCE 函数 `COALESCE(expr1, expr2, ...)` 返回参数列表中第一个非 NULL 的值。如果没有非 NULL 值,则返回 NULL[^4]。 **示例代码:** ```sql SELECT COALESCE(NULL, '值1', '值2') AS result; ``` 上述语句会返回 `'值1'`,因为它是第一个非 NULL 的值。 --- ### 结合实际场景的应用 在实际开发中,条件判断函数经常用于数据处理和业务逻辑实现。例如,在插入数据时根据条件动态生成字段值: **示例代码:** ```sql INSERT INTO table_name (column1, column2, column3) VALUES ( '固定值', IF(score >= 60, '及格', '不及格'), CURRENT_TIMESTAMP ); ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值