希望这个问题不要太笼统。无法在站点或SQL文档中找到任何内容:
在编写代码时,我对此进行了测试,让我感到惊讶的是,它起了作用:
SELECT * FROM cal_entry WHERE cal_entry.parent_id <> 'null'它实际上显示了没有NULL值的行(这些是数据库中的实际NULL值,而不是包含'null'的字符串)。
当然,根据文档,我应该使用NOT NULL。顺便说一句,它不适用于= 'null',就像在文档中正确说明的那样。
有人能解释一下吗?
发布于 2018-12-19 13:46:23
假设parent_id在int列中,查询将返回所有非空行、非零行:
SELECT *
FROM (
SELECT NULL AS parent_id UNION ALL
SELECT 0 UNION ALL
SELECT 1 UNION ALL
SELECT 2
) AS cal_entry
WHERE cal_entry.parent_id <> 'null'
-- returns 1 and 2 but not 0!当将数字与字符串进行比较时,MySQL将将字符串转换为数字。下面是一些例子:
'null'变为0'asdf'变为0'1asdf'变成123'1'变成1您的查询将表现为:
WHERE cal_entry.parent_id <> 0发布于 2018-12-19 13:05:42
您正在选择<> 'null'为真的所有行。
将(等于或不等于)与null进行比较是空的,因此如果cal_entry.parent_id为空的行,则条件为false/null。
因此,您的查询将获得所有非空行,也不会包含字符串' null‘。
(注意,你也可以写<>'something_else')
发布于 2018-12-19 13:03:58
这个运算符给出的结果不等于。例如。$var !=空。我们用mysql写成<>。这是一种验证,即该值永远不等于null。
https://stackoverflow.com/questions/53851798
复制相似问题