Oracle null 的使用
Null 的认识:
A.
null 称它为空,等价于没有任何值、是未知数;NULL 与 0、空字符串、空格
都不同 。
{注意正解 oracle 中空字符串 会解析成 null , 在 PL/SQL 中,空串与 NULL 被
视为等价值 例子 select nvl('','-') from dual ; select decode('',null,1,2)
from dual ; }
B.
oracle 中空字符串同 null
MSSQL 真正将空串视为一个有意义的标识,即不是一个空值,与 Oracle 一样,Sybase 中
同样不存在长度为 0 的字符串,但是与 Oracle 不同的是,Sybase 并不将空串视作 NULL,
而是视作与只包含一个空格的字符串等价。
MSSQL 中,substring(‘123’, 4, 1)返回’’,而在 Sybase 中却返回 NULL。在 Oracle 中
substr(‘123’, 4, 1)返回 NULL ; select substr(‘123’, 4, 1) from dual ;
C.
Oracle 中 null 的长度
一些文章上说 null 长度为零 ( ×),其实长度也为 null (比如 select
length(null) from dual ;) 。Oracle 不存在长度为 0 的字符串 。
D.
函数内若有参数为空此时返回为空,但某些除外
-------明白函数解析原理, 对于度量函数,如果给定的参数为空值,则其(NVL、TRANSLATE
除外)返回值为空值 ,应该是 (nvl,decode,count 除外,如果 TRANSLATE 中的任何参数为
NULL,那么结果也是 NULL )
select instr('','04t') from dual ;
select instr(' ','04t') from dual ;
select instr(' ','04t',4,1) from dual ;
select substr('123', 4, 1) from dual ;
Null 的使用技巧或注意事项:
A.