这三个函数虽然都是判断空的,对于一般的数据类型处理上也没有什么不同,但是当处理clob,blob这种大字段时,他们不一样的地方便显示了出来。
1.nvl
select nvl(content,'') from ANNOUNCEMENT where ISTRAIN = 0 AND ROLES IS NULL
这可看出来,nvl将这种大字段转换成了长文本。
2.ifnull
select IFNULL(content,'') from ANNOUNCEMENT where ISTRAIN = 0 AND ROLES IS NULL
数据结果如图所示
ifnull将字段转型到了varchar,如果大字段数据超长的话,在编程语言(java,c++等)调用的时候就会报sql异常,截断字符串错误了。varchar是有最大默认长度的。
3.isnull和nvl的效果是一样的,感兴趣的同学可以试试。
所以在判断一个数据库的值是否是空的时候,建议使用isnull()和nvl().如果想clob,blob这种大字段,就需要做流处理了。