在用select语句查询表中NOT NULL字段时,居然出现了空值(‘’),借此机会将两者的区别进行一次整理。
【NULL】
<解释>
NULL表示数据表中字段的缺省值(数值未知),即没有赋值的状态。
NULL与任何值进行计算结果也是NULL。
在WHERE条件中,NULL结果会被解释成FALSE。
<产生>
a. 使用INSERT或UPDATE语句对表中数据进行添加或更新时,显示指定某字段为NULL。
b. 使用INSERT语句添加数据时,不指定某字段值。
c. 使用SELCET语句对表进行查询时,查询的指段含有条件运算(CASE WHEN),且没有指定ESLE,
如果某值走到ELSE分支,结果将会出现NULL。
d. 用外关联进行查询时,如果主表关联字段值在副表中不存在,且查询字段中含副表字段时,
该字段值将显示为NULL。
e. 用ALTER TABLE语句在已知表中添加新字段。
<判断>
判断某字段是否为NULL,可以用IS NULL 或 IS NOT NULL, 不能用 <> 或 != 或 =
<相关函数>
NVL(exp1, exp2) -- 如果exp1为NULL,则返回exp2, 否则返回exp1
--exp1和exp2必须类型相同
NVL2(exp1,exp2,exp3) --如果exp1为NULL,则返回exp3, 否则返回exp2
--exp2和exp3如果类型不同,exp3会自动转换成exp2类型
【空值('')】
<解释>
空值('')表示长度为0的字符串。
<产生>
用INSERT或UPDATE可以显示添加或更新某字段值为空值('')。
<判断>
可以用 <> 或 != 或 =