MySQL中的NULL:理解和处理(mysql返回null)
MySQL中使用了关键字NULL表示某一列的值为空,当创建一个新列时,如果不指定它的值,即赋值为NULL,该列中将具有NULL值。NULL在MySQL中是一种特殊值,与普通值(如整型、字符串等)不同,它表示空值,说明该数据没有值或不可确定;MySQL中用现字来描述NULL的值为“空值”,而不是“空”。
由于NULL 不等于空字符串,因此在SQL语句中使用NULL值比较时,不能使用‘=’、‘!=’运算符,此时应该使用‘IS NULL’、‘IS NOT NULL’运算符:
例如:
查询联系电话为空的学生:
SELECT * FROM STUDENT WHERE PHONE IS NULL
查询联系电话不为空的学生:
SELECT * FROM STUDENT WHERE PHONE IS NOT NULL
MySQL另外提供了‘ COALESCE()’函数,该函数返回其搜索参数列表中非NULL值的第一个参数:
例如:
SELECT COALESCE(PHONE,’无’) FROM STUDENT
(1)当PHONE不是NULL时,COALESCE()函数返回PHONE的值;
(2)当PHONE为NULL时,COALESCE()函数返回“无”。
此外,MySQL还提供了‘ IFNULL()’函数,功能与‘ COALESCE()’函数是一样的,只是字面表达上略有不同。
使用NULL值存在了很多问题,这使得数据统计变得复杂,因为正常的逻辑操作均会忽略NULL值,例如求和、求平均值等,如果有NULL值参与运算,得到的结果将变得不准确。为了规避这些问题,应尽量避免使用NULL值。
总之,MySQL 中的 NULL 值是一种特殊值,用来表示该列没有值或不可确定。它是流行的 SQL 实现系统中常用的特殊值,使用NULL值使数据库程序变得复杂,因此尽量避免使用NULL值,应使用 IS NULL 和 IS NOT NULL操作符或 COALESCE 和 IFNULL 等函数来处理NULL值。