sql中的使用空值,
什么是空值:
空值从技术上说是“未知的值” 但是空值并不包含零,一个或者多个空格组成的字符串,空格已经零长度的字符串,从实际上说 空值说明没有向数据库中输入相应的数据,或者某个特定的记录不需要使用该列,在实际中有以下几种情况可以使得一列为null
01 其值未知,如果课程表中的不明确具体内容的课程内容,
02 其值不存在 如在学生表中某个学生由于没有考试所以该学生的考试成绩为空
3 列对表不可用
检测空值: 因为空值代表 是未知的值,所以并不是所有的空值都相等,例如 student 表中的两个学生的年龄未知 但是无法证明这两个年龄的学生是同龄 这样就不可以用等 运算符来检测 所以sql 引入了一些特殊的操作符来检测这些值之间的等价性。我们用到的关键字是is
select * from [user] where age is null
上面程序我们改写成如下的样子用等号来判断null值 但是改成=号是不成功的,
is 运算符可以和not配合使用 判断非null
处理空值:
在实际处理中我们空值是很不熟欢迎的 通常需要将空值转化为一个有效的值 一边对数据理解 或者防止表达式出错
sql 为处理空值提供了几个专门的处理空值的函数 isnull 函数()可可以将空值转化为有效的值 ernullif函数可以根据制定条件来生成空值
01 使用isnull() 函数处理空值
isnull(check_expression,repartment_value
)
参数说明第一个参数 将被检测是否为null 的表达式check_expression 可以是任何数据类型的
第二个参数 在第一个参数为null 的情况下将 第二个函数替换为null值 第二个函数必须与第一个函数的相同类型
返回类型 返回与第一个参数类型相同
说明如果第一个参数不为null 那么返回该表达式的值 否则返回的是第二个参数的值
select name,address,isnull(phone,0) as 电话 from [user]
但是这样的情况下没有改变数据库的原始数据为null 的实际情况
02 使用nullif()函数处理空值
nullif函数功能 如果一个数据表应该使用null 的地方使用了其他数据那么可以使用nullif 函数将这些不一致的值 替换为空
nullif(expression,expression)
参数说明:expression 常量,列明,函数,子查询或运算符,安位运算符以及字符串的任意组合返回类型与第一个参数类型相同,如果两个表达式不相等 nullif 返回一个expression 的值如果相等nullif 返回第一个expression 类型的空值
说明:两个表达式相等且结果表达式为null null等价于case的搜索函数
select nullif(sex,’男’) as 性别 from [user]