Sql 空字符串vs NULL
我有一个表格,其中一些行有一些空白的Sql 空字符串vs NULL,sql,sql-server,null,cells,Sql,Sql Server,Null,Cells,我有一个表格,其中一些行有一些空白的单元格。我尝试使用IS NULL函数选择这样的行。但是查询选择0行 select * from zzz_fkp_registration_female where fname is null; (0 row(s) affected) 现在我将查询更改为: select * from zzz_fkp_registration_female where fname is null or fname =''; 我得到了预期的结果 为什么NULL不给出结果?由于单
单元格
。我尝试使用IS NULL函数选择这样的行。但是查询选择0行
select * from zzz_fkp_registration_female where fname is null;
(0 row(s) affected)
现在我将查询更改为:
select * from zzz_fkp_registration_female where fname is null or fname ='';
我得到了预期的结果
为什么NULL不给出结果?由于单元格为空,因此
与“
之间的区别是空的。请解释。它们之间的一些区别:
NULL
可以分配给任何类型,而不是与日期/数字字段不兼容的空字符串
NULL
是一个未知值,它没有值,而不是空字符串,空字符串是一个值,而是一个空字符串
- 据我所知,
NULL
不应该捕获内存,而空字符串则会捕获内存
null=null
将导致null
,而'='
将导致TRUE
他找不到NULL,因为它没有值
空字符串是一个值,但它是空的
只有当它是一个可以与另一个值进行比较的值时,才能按如下方式修改查询:
select * from zzz_fkp_registration_female where isnull(fname,'') = '';
此查询将生成所有空白单元格以及具有空值的单元格
注:
空值表示缺少未知数据
空白数据是在输入过程中作为空白输入的实际数据
- Null表示缺少值。空字符串是一个值,但只是空的
- Null对于数据库是特殊的
- Null没有边界,它可以用于数据库中的字符串、整数、日期等字段
- NULL没有分配任何内存,具有NULL值的字符串只是指向内存中任何地方的指针。但是,尽管存储在内存中的值为“”,但会将Empty分配给内存位置
通过使用NULL,您可以区分“不放数据”和“放空数据”
还有一些区别:
NULL的长度为NULL,空字符串的长度为0。
空值排序在空字符串之前。
COUNT(message)将对空字符串计数,但不会为null
可以使用绑定变量搜索空字符串,但不能搜索空字符串。此查询:
SELECT *
FROM mytable
WHERE mytext = ?
无论从客户端传递什么值,mytext中都不会匹配NULL。要匹配空值,必须使用其他查询
选择*
从mytable
如果mytext为NULL
是因为包含NULL的单元格和空单元格是两种不同的东西。
i、 e.->NULL与“”或“”不同。在sql中,NULL被定义为NULL,并且“”表示某个空值“”空字符串:我们可以说没有值。但是NULL意味着我们不能说没有价值。这意味着可能有价值,但它是未知的。这就是NULL与空字符串不同的原因。不允许零长度字符串作为名称(具有约束或触发器)。在这种情况下使用NULL。NULL为NULL,blank为空…NULL表示它包含“NULL”作为值,“”表示不包含任何值。通过选择cell为NULL,并且通过cell='',实际上,NULL=NULL
将导致未知,请参阅。