SQL学习之空值(Null)检索

在创建表表,我们可以指定其中的列包不包含值,在一列不包含值时,我们可以称其包含空值null。

确定值是否为null,不能简单的检查是否=null。select语句有一个特殊的where子句,可用来检查具有null值的列。这个where子句是IS NULL子句。

select * from T_Check_InfoDetail 得到如下视图:

这个时候我们需要检索CheckValueString列为NULL值,ResultRemarks(该字段为空的记录)

我会这么写代码

select * from T_Check_InfoDetail where CheckValueString = null and ResultRemarks=''

然后控制台报错:

数据类型 text 和 varchar 在 equal to 运算符中不兼容。

查了下说:text类型查询时不支持=,可以支持like,nvarchar(max)数据类型是新类型,长度与text相等
操作text类型的函数很特殊,所以自新版本以来,一般大数据类型都定义为max,弃用text,只能datalength(字段名这里是(ResultRemarks))=0判断它的长度是否为0来判断这个字段是否为空!

所以代码改成这样的:

select * from T_Check_InfoDetail where CheckValueString = null and datalength(ResultRemarks)=0

结果还是什么都没有,这个时候查了下资料发现,null值zai数据库里面有特殊意义,它与字段包含0、空字符串、或仅仅包含空格不同。

所以判断字段是否为空,必须也要使用特殊的where子句 is NULL,代码如下:

select * from T_Check_InfoDetail where CheckValueString is null and datalength(ResultRemarks)=0

ok!

posted @ 2016-08-26 13:36  郑小超  阅读(1399)  评论(0编辑  收藏  举报