SQL中casewhen结构具有两种格式——简单Case函数和Case搜索函数。语法分别如下:
--简单Case函数
CASE <em>变量</em>WHEN <em>常量</em> THEN <em>表达式</em>WHEN <em>常量</em> THEN <em>表达式</em>ELSE <em>表达式</em>END--Case搜索函数
CASE WHEN <em>变量</em> = <em>常量</em> <wbr /> THEN <em>表达式</em>WHEN <em>变量</em> = <em>常量</em> THEN <em>表达式</em>ELSE <em>表达式</em> END
个人比较推荐使用后一种,因为我遇到了这样一种情况:
select case <wbr /><em>变量</em> <wbr /> when <wbr />null<wbr /> then fnc_checkAddress('例子',1,2) <wbr /><wbr /> else fnc_checkAddress_ex('例子',1,2) endfrom dual;
这个语句无论如何都无法跳到第一种情况,也就是说简单Case函数至少在Oracle中无法判断变量为空的情况,将其改为:
select case <wbr />when <em>变量</em> is null<wbr /> then fnc_checkAddress('例子',1,2) <wbr /><wbr /> else fnc_checkAddress_ex('例子',1,2) endfrom dual;
之后一切正常,不知道这算不算是一个bug。这个问题折磨了我好久,差点影响进度乃至加班。@沂濛
文章评论