示例:
create unique index po_order_vdef6_index on po_order(NVL2 (NULLIF(nvl(dr,0),1),NULLIF(vdef6,'~'),null));
解析: dr=0 且 vdef6不等于~ 时 vdef6 不能重复
当 br=1 时,NULLIF(br,1) 则返回null值, 即NVL2(NULLIF(dr,1),dr,NULL), 返回的是null值,同理,另外两个NVL2的表达式也是返回null值,因此,三个字段都认为是null值,所以可以允许插入;
NULL指的是空值,或者非法值。
NVL (expr1, expr2)->expr1为NULL,返回expr2;不为NULL,返回expr1。注意两者的类型要一致
NVL2 (expr1, expr2, expr3) ->expr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型
NULLIF (expr1, expr2) ->相等返回NULL,不等返回expr1