MySQL - NULL安全不等于运算符

Kor*_* M. 22 php mysql null equals

我只是好奇.我知道NULL安全等于运算符<=>,但是有一些NULL安全NOT等于运算符,或者我必须总是使用类似的东西:

(tab.id != 1 OR tab.id IS NULL)
Run Code Online (Sandbox Code Playgroud)

或者有人喜欢

!(tab.id <=> 1)
Run Code Online (Sandbox Code Playgroud)

小智 11

我发现NOT(NULL <=> 1)有效,我认为它也符合ISO标准,但很麻烦.使用列名显示的更好方法是:NOT(tbl.col1 <=> 1)

  • `<=>`不是标准SQL,它是MySQL扩展.标准的等效空安全比较,通常对于SQL,更加冗长:`IS [NOT] DISTINCT FROM`. (2认同)

Rob*_*lin 9

COALESCE(tab.id, 0) != 1
Run Code Online (Sandbox Code Playgroud)

如果你喜欢的话可以在这里使用.我遍历参数,并返回第一个不是的值NULL.在这种情况下,如果是NULL,它将进行比较0 != 1.虽然它可能会使用更多的迹象,但它仍然更容易管理,而不是被迫在这些情况下总是使用相反的"布尔"作为解决方案.

阅读文档 COALESCE()

  • 不幸的是,如果你不知道这个比较的RHS值,你不知道COALESCE()你的NULL到底是什么! (4认同)

sim*_*eco 7

现在MySQL没有NULL 安全的不等于运算符。

使用MySQL最通用的解决方案是:

!(tab.id <=> 1)
Run Code Online (Sandbox Code Playgroud)

或者

NOT tab.id <=> 1
Run Code Online (Sandbox Code Playgroud)

因为即使代替1你使用它也会正常工作NULL