nullsafe的解释

Ton*_*rez -2 mysql comparison null

我已经意识到如果'fk_building'为null,这两个查询都不起作用.我不明白为什么,似乎找不到一个很好的解释,因为它有点难以谷歌.有人可以解释为什么地狱!= 3不会返回一切不是3 ??? 包括空行?为什么我需要使用<=>?

update floor set fk_building = 3 where fk_building != 3 and floor_id = 1;
Run Code Online (Sandbox Code Playgroud)

要么

select * from floor where fk_building != 3
Run Code Online (Sandbox Code Playgroud)

在fk_building为null的地方不起作用.

Lit*_*les 5

我建议查看WikipediaNULL值的"常见错误"部分.

从条目:

例如,WHERE子句或条件语句可能会将列的值与常量进行比较.如果该字段包含Null,则通常错误地认为缺失值将"小于"或"不等于"常量,但实际上,此类表达式返回Unknown

正如用户建议的那样,如果你的RDBMS允许,你可以使用null安全操作符,或者检查IS NULL.