空字符串与 NULL
Empty string vs NULL
我有一个 table,其中一些行有一些空白 cells
。我尝试使用 IS NULL 函数 select 这样的行。但是查询了select0行。
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 ='';
我得到了想要的结果。
为什么IS NULL没有给出结果? IS NULL
和 ''
之间有什么区别,因为单元格是空的。请解释。
它们之间的一些区别:
NULL
可以分配给任何类型,而不是与 date/numerical 字段不兼容的空字符串。
NULL
是一个 UNKNOWN 值,它没有值,与空字符串相反,空字符串是一个值,但是是空值。
- 据我所知,
NULL
不应捕获内存,而空字符串会捕获内存。
null = null
将导致 null
而 ''=''
将导致 TRUE
.
他找不到 NULL 因为它没有值
空字符串是一个值,但它是空的。
只有当它是一个值时,它才能与另一个值进行比较
您可以按如下方式修改您的查询:
select * from zzz_fkp_registration_female where isnull(fname,'') = '';
此查询将生成所有空白单元格以及具有空值的单元格。
注:
- NULL 值表示缺少未知数据。
- 空白数据是在输入过程中作为空白输入的实际数据。
Null 表示没有值。空字符串是一个值,但只是空的。
Null 对数据库来说是特殊的。
- null 没有边界,它可以用于数据库中的字符串、整数、日期等字段。
- NULL 没有分配任何内存,NULl 值的字符串只是一个指向内存中任何地方的指针。然而,Empty IS 被分配到一个内存位置,尽管内存中存储的值是 "".
通过使用 NULL,您可以区分 "put no data" 和 "put empty data"。
更多差异:
A LENGTH of NULL 为NULL,A LENGTH of an empty string 为0。
NULL 排在空字符串之前。
COUNT(message) 将计算空字符串但不计算 NULL
您可以使用绑定变量搜索空字符串,但不能搜索 NULL。此查询:
SELECT *
FROM mytable
WHERE mytext = ?
永远不会匹配 mytext 中的 NULL,无论您从客户端传递什么值。要匹配 NULL,您必须使用其他查询
SELECT *
FROM mytable
WHERE mytext IS NULL
这是因为包含 NULL 的单元格和空单元格是两种不同的东西。
即 -> NULL 与 '' 或 "" 不同。
我有一个 table,其中一些行有一些空白 cells
。我尝试使用 IS NULL 函数 select 这样的行。但是查询了select0行。
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 ='';
我得到了想要的结果。
为什么IS NULL没有给出结果? IS NULL
和 ''
之间有什么区别,因为单元格是空的。请解释。
它们之间的一些区别:
NULL
可以分配给任何类型,而不是与 date/numerical 字段不兼容的空字符串。NULL
是一个 UNKNOWN 值,它没有值,与空字符串相反,空字符串是一个值,但是是空值。- 据我所知,
NULL
不应捕获内存,而空字符串会捕获内存。 null = null
将导致null
而''=''
将导致TRUE
.
他找不到 NULL 因为它没有值
空字符串是一个值,但它是空的。
只有当它是一个值时,它才能与另一个值进行比较
您可以按如下方式修改您的查询:
select * from zzz_fkp_registration_female where isnull(fname,'') = '';
此查询将生成所有空白单元格以及具有空值的单元格。
注:
- NULL 值表示缺少未知数据。
- 空白数据是在输入过程中作为空白输入的实际数据。
Null 表示没有值。空字符串是一个值,但只是空的。
Null 对数据库来说是特殊的。
- null 没有边界,它可以用于数据库中的字符串、整数、日期等字段。
- NULL 没有分配任何内存,NULl 值的字符串只是一个指向内存中任何地方的指针。然而,Empty IS 被分配到一个内存位置,尽管内存中存储的值是 "".
通过使用 NULL,您可以区分 "put no data" 和 "put empty data"。
更多差异:
A LENGTH of NULL 为NULL,A LENGTH of an empty string 为0。 NULL 排在空字符串之前。 COUNT(message) 将计算空字符串但不计算 NULL 您可以使用绑定变量搜索空字符串,但不能搜索 NULL。此查询:
SELECT *
FROM mytable
WHERE mytext = ?
永远不会匹配 mytext 中的 NULL,无论您从客户端传递什么值。要匹配 NULL,您必须使用其他查询
SELECT *
FROM mytable
WHERE mytext IS NULL
这是因为包含 NULL 的单元格和空单元格是两种不同的东西。 即 -> NULL 与 '' 或 "" 不同。