1, NVL函数
,,,, NVL (expr1 expr2),如果expr1为空,则返回expr2;
2, NVL2函数
,,,, NVL2 (expr1, expr2 expr3),如果expr1为空,则返回expr3,否则返回expr2;
3, NULLIF函数
,,,, NULLIF (expr1 expr2),如果expr1=expr2返回空,否则返回expr1,要求两个表达式数据类型一致。
,,,,完成;(9)插入t1值;
说明1:NVL和NVL2函数在进行空值判断的时候,都会将函数内的表达式执行一次。
4,解码函数:
,,,,,是甲骨文数据库独家提供的函数功能,不是sql标准,
,,,,,相当于程序语言中其他的如果1=1 1 1 !=1的执行效果;
,,,,,
,,,,,,,,,,,,
,,,,,,,,,,,,
<强> 强>
,,,,完成;创建表t1 (int);——创建t1临时表
,,,,完成;(9)插入t1值;
,,,,完成;(9)插入t1值;——插入3行数据,数据值都是9
,,,,完成;创建或替换函数sleep_now返回数量是
,,,,,2,我号码;
,,,,,3,开始
,,,,,4,我:=0;
,,,,,5,while8
,,,,,6,i<=1000000
,,,,,7,循环
,,,,,8,我:=i + 1;
,,,,,9,结束循环;
,,,,, 10,返回我。
,,,,, 11,,
,,,,, 12,/,,,,,,,,,,,,——创建一个sleep_now函数,目的是为了加长sql执行的时间
,,,,完成;设置时间,,,,,,,,,,,,,,设置sqlplus命令执行时间
,,,,完成;选择,nvl(我sleep_now())从t1;
,,,,,
,,,, nvl(我sleep_now ())
,,,, - - - - - - - - - - - - - - - - - -
,,,,,,,,,,,,,9
,,,,,,,,,,,,,9
,,,,,,,,,,,,,9
,,,,,
,,,,在0.343秒,执行——判断t1表中我的字段是否为空,为空则执行sleep_now()函数;
,,,, sql执行时间是0.343秒;
,,,,完成;选择,nvl2(我sleep_now(), 1)从t1;
,,,,,
,,,, nvl2(我sleep_now (), 1)
,,,, - - - - - - - - - - - - - - - - - - - - - - - -
,,,,,,,,,,,1000001
,,,,,,,,,,,1000001
,,,,,,,,,,,1000001
,,,,,
,,,,执行0.343 seconds ——同样使用nvl2函数进行测试
,,,,,使用解码进行相同测试,执行时间是0.063秒
,,,,完成;选择解码(我,null, sleep_now(), 1111)从t1;
,,,,,
,,,,解码(我,null, sleep_now(), 1111年
,,,, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
,,,,,,,,,,,,,,,,,1111年
,,,,,,,,,,,,,,,,,1111年
,,,,,,,,,,,,,,,,,1111年
,,,,,
,,,,在0.063秒内执行
总结:错误的,不恰当的使用nvl函数,后患无穷!