'IS DISTINCT FROM'是一个真正的MySQL运营商吗?

时间:2014-11-25 18:47:26

标签: mysql logical-operators

在一本书中,我看到了这种语法:

SELECT * FROM inw WHERE id IS DISTINCT FROM 4;

但是我收到了一个错误:

  

错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在4' DISTINCT FROM 4'附近使用正确的语法。在第1行

它可以替代:

mysql> SELECT * FROM inw WHERE id is null OR id <> 4;
+------+
| id   |
+------+
| NULL |
| NULL |
|    3 |
+------+

&#39;是不是来自&#39;一个真正的MySQL运营商?

1 个答案:

答案 0 :(得分:8)

is distinct from在SQL:2003标准中定义,是一个比较两个值的null安全运算符。

MySQL支持“null safe equals”运算符:<=>。如果否定,则会得到相同的行为。 (<=>对应is not distinct from

SELECT * 
FROM inw 
WHERE not id <=> 4;

SQLFiddle:http://sqlfiddle.com/#!2/0abf2a/3