在创建表表,我们可以指定其中的列包不包含值,在一列不包含值时,我们可以称其包含空值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!