Oracle常用分支语句

  1. case简单函数:写法简单,但表达范围受限,适合处理简单逻辑。
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
  1. 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')
  1. 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)
  1. NVL函数。
    NVL(求值表达式1, 求值表达式2)。
NVL函数的格式如下:NVL(expr1, expr2)
含义:若第一个参数的值不为null,则直接返回第一个表达式的值;若第一个表达式的值为null,则返回第二个参数的值。

例如:select ename, NVL(comm, -1) from emp;
  1. 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;
}
posted @ 2022-09-06 23:32  JaxYoun  阅读(147)  评论(0编辑  收藏  举报