Oracle常用分支语句
- case简单函数:写法简单,但表达范围受限,适合处理简单逻辑。
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
- case搜索函数:写法灵活,可以写出复杂逻辑。
SELECT
'INTEGRAT' AS origin,
end_time + length_days AS begin_time,
CASE
WHEN fffff = '0' THEN end_time
ELSE
CASE WHEN end_time - length_days > sysdate THEN sysdate ELSE end_time - length_days END
END AS end_time
FROM
zg_time_config
WHERE
upper(table_name) = upper('tb_mz_sfmxb')
AND upper(origin) = upper('INTEGRAT')
- DECODE函数。
DECODE(求值表达式, 值1, 返回值1, 值2, 返回值2,…值n, 返回值n, 缺省值),非常有用,在简单求值计算场景下,能大大简化冗长的sql语句。
SELECT DECODE( sex, 'GB/T2261.1_0', 0, 'GB/T2261.1_1', 1, 'GB/T2261.1_2', 2, 'GB/T2261.1_9', 9, 9) AS gender FROM DUAL; -- 需要写枚举转换语句(男,女,未知,其他(包含null)
- NVL函数。
NVL(求值表达式1, 求值表达式2)。
NVL函数的格式如下:NVL(expr1, expr2)
含义:若第一个参数的值不为null,则直接返回第一个表达式的值;若第一个表达式的值为null,则返回第二个参数的值。
例如:select ename, NVL(comm, -1) from emp;
- NVL2函数。
NVL2函数的格式如下:NVL2(expr1, expr2, expr3)
含义:若第一个参数的值不为null,
则返回第二个参数的值;
若第一个参数为null,则返回第三个参数的值。
例如:SQL> select ename, NVL2(comm, -1, 1) from emp;
java伪代码:
if(Objects.isNull(expr1)) {
return expr3;
} else {
return expr2;
}
学习使我充实,分享给我快乐!