重点学习
! 利用 CASE表达式返回可选的值
! 在CASE表达式中使用特定的变量
! NULLIF的使用方法
! COALESCE (接合)
CASE 表达式
CASE表达式被用来根据搜索的条件返回可选的值。CASE表达式有两种格式:
! Valued (基于值)
! Searched (基于搜索)基于值(Valued)的CASE语句
CASE语句允许对返回的数据记录进行条件处理。基于值的CASE表达式的基本格式为:
CASE value-expr WHEN expr1 THEN result1
WHEN expr2 THEN result2
:
ELSE resultn END它的特点是:
! 对处理的每一条数据记录都将返回一个单独的结果
! 每一行的值决定于每一个WHEN子句
! 对于某行的处理首先找到第一个匹配的值并返回结果,如果没有匹配的值,则返回ELSE子句后面的值。基于搜索(Searched)的CASE语句
在基于搜索的CASE语句中,没有必要指定一个表达式来进行计算,将计算的值作为匹配的基础。取而代之的是,可以指定多个、任意的搜索条件,对每一个搜
索条件返回相应的值。对于不匹配的条件处理,可以明确地指定一个ELSE子句,或利用缺省的ELSE NULL子句。基于搜索的CASE语句格式为:
CASE WHEN condition1 THEN value-expr1
WHEN condition2 THEN value-expr2ELSE value-expr END
NULLIF表达式
NULLIF实际上用来作为CASE语句在某种情况下的缩写,其格式为:NULLIF ( <expression1> , <expression2> )
规则:
! 如果表达式1等于表达式2,则返回NULL
! 如果表达式1不等于表达式2,则返回表达式1的值。NULLIF等价于:
CASE
WHEN <expression1> = <expression2> THEN NULL
ELSE <expression1>
END
COALESCE(接合)表达式
COALESCE实际上也是CASE语句在某种特殊情况下的宿写。COALESCE将返
回第一个非NULL表达式的值。其格式为:
COALESCE ( <expression1> , <expression2> [, <expressionX> ] )
等价于:
CASE
WHEN <expression1> IS NOT NULL THEN <expression1>
WHEN <expression2> IS NOT NULL THEN <expression2 >
...
WHEN <expressionX> IS NOT NULL THEN <expressionX>
ELSE NULL
END