Oracle 提供了很多种在sql语句中实现 if–then --else条件逻辑的方法,可以选择下面几种常用的条件逻辑结构:
- Decode
- Case when
- Nvl、 nvl2、coalesce
- Nullif
1、Decode 函数
Decode是Oracle特有的函数,只能用于相等的判断,且不适合对Null值进行判断。
decode(字段,情况1,显示结果1,情况2,显示结果2,……,都不满足的显示结果)

2、Case when语句
常用的case when 语句有两类:一种简单式与decode类似,一种条件搜索式。
(1)简单式

(2)搜索式 搜索式可以实现更复杂的逻辑判断。

不管是简单式还是搜索式,判断的顺序都是自上而下的,如果一条数据满足多个判断,按照第一个匹配到的条件执行,且终止,不再向下执行。
3、Nvl、Nvl2、Coalesce函数
这三个函数是专门用来处理NULL值的。
NVL(字段,为空时的默认值),NVL(字段,不为空时的值,为空时的值)

coalesce(expre1,expre2,expre3,……)的作用是:返回传入的参数中第一个非null的值。expre1不为空值则返回expre1;否则判断expre2是否是空值,如果expre2不为空值则返回expre2;否则判断expre3是否是空值,如果expre3不为空值则返回expre3;……以此类推,如果所有的表达式都为空值,则返回NULL。
例子:nullbalance为空就判断nvl(balance,0)+100,直到不为NULL,否则为0

4、NULLIF函数
NULLIF(Expression1,Expression2):给定两个参数Expression1和Expression2,如果两个参数相等,则返回NULL;否则就返回第一个参数。
等价于:Case WHEN Expression1=Expression2 Then NULL ELSE Expression1。
例子:0和0 相等显示为空,5和2不等显示5

Oracle提供了多种条件逻辑结构,包括Decode函数、Case when语句、Nvl、Nvl2、Coalesce函数以及NULLIF函数。Decode函数适用于简单的相等判断,Case when语句能实现更复杂的逻辑,Nvl系列函数处理NULL值,而NULLIF函数在两个参数相等时返回NULL。

9928

被折叠的 条评论
为什么被折叠?



