"空值"是对null值的中文叫法,两者同指一个东西。
我想楼主是想弄清楚null(空值)与零长度字符串''(或称为空字符串)之间的区别。
在代码里"零长度字符串"用一对没有间隔的英文引号''表示,它的数据类型是明确的即属于字符型,存储"零长度字符串"是要占用物理磁盘空间的;
而null值其数据类型是未知的,它不会占用物理磁盘空间。
在不存在约束限制的情况我们可以将Null值插入任何数据类型的字段里,而零长度字符串''只能插入到字符型数据类型字段中,插入其它类型字段会报错。
我们通过实测看看null(空值)与零长度字符串''(或称为空字符长)之间的区别:
1)输出所有的记录
select from students;
注意:此例输出源表中的全部记录,含null(空值)和零长度字符串''
2)输出电话为Null(空值)的记录
select from students where phone is null;
注意:此例只输出含Null(空值)的记录
3)输出电话为零长度字符串的记录
select from students where phone='';
注意:此例只输出含零长度字符串的记录。
4)输出电话不是零长度字符串的记录
select from students where phone<>'';
注意:此例MySQL的处理方式有些特别,连含Null值得记录也排除掉了,这与MSSQL的处理方式有点不一致。
5)输出电话不为空的记录
select from students where phone is not null;
注意:此例只要不含Null值的记录都予以输出
在MS
SQL
Server和Oracle这两个主要的数据库中,空值都比较特殊,不能直接用"="或"<>"号来比较,如果你要用这两个符号比较,就会发现,空值即不在等于的集内,也不在不等于的集内。
特别注意的是,空值用“<>”(不等于)比较时,也不在集合内!具体的你自已测试一下就明白了。
常见的做法是用"IS
NULL"或“IS
NOT
NULL”来确定是不是空值。比如你的情况应该改写语句为:
where itemno IS NULL
VB读取数据库中的空值是会出错,所以,应该提前判断一下:
if isnull(rsfields(2)) then
m="空值"
else
m=rsfields(2)
end if
最简单的办法是:
trim(rsfields(2) & "")
数据库中:
NULL表示“没有对(列)变量输入数据”,即在数据库中的NULL可以区分“没有对(列)变量输入数据”和“有对(列)变量输入数据”这两类情况。
而输入空字符串,则是这里的“有对(列)变量输入数据”这一类情况,即有输入数据,只是输入的数据为空字符串(含有终止符的还是)。
以上就是关于MySQL 中NULL和空值的区别全部的内容,包括:MySQL 中NULL和空值的区别、sql数据库查询中,空值查询条件怎么写、VB读取数据库里的空值,怎么读取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)