Oracle SQL中如何编写if else if条件 实现指定业务逻辑计算
SQL多分支条件计算实现
SQL中实现这类if-else-if逻辑统一使用标准语法CASE表达式,所有主流关系型数据库都兼容,直接套用即可。
单查询场景(计算结果作为输出字段)
SELECT -- 此处补充你需要查询的其他原有字段 CASE WHEN depcost <> empcost AND empcourseid IN ('A','B') THEN (empvar / empdar) * empcost WHEN depcost <> empcost AND empcourseid <> 'A' THEN empcost ELSE depcost END AS empnfees FROM 你的业务表名;
表字段更新场景(把计算结果写入现有empnfees字段)
UPDATE 你的业务表名 SET empnfees = CASE WHEN depcost <> empcost AND empcourseid IN ('A','B') THEN (empvar / empdar) * empcost WHEN depcost <> empcost AND empcourseid <> 'A' THEN empcost ELSE depcost END -- 可自行补充WHERE条件限定更新范围 ;
注意事项
- 若字段
empdar存在为0的可能,建议添加除以0的异常判断,把(empvar / empdar)替换为CASE WHEN empdar = 0 THEN 0 ELSE empvar/empdar END即可 - 如果你用的数据库有
IF函数(比如MySQL)也可以嵌套IF实现,但CASE的兼容性和可读性更好,更推荐使用
内容的提问来源于stack exchange,提问作者user17344362
相关产品推荐
相关产品推荐

