MySql <> NULL和IS NOT NULL之间的区别

时间:2019-01-25 12:45:10

标签: mysql sql

在我的数据库中,有一个varchar(255)列,对于某些记录,它包含空值, 当我开枪

SELECT * FORM my_table where some_column <> NULL;

一无所获

但是被解雇了

SELECT * FORM my_table where some_column IS NOT NULL;

我有想要的记录

您能否解释一下它们之间的主要区别以及何时使用<>和!=运算符。

2 个答案:

答案 0 :(得分:6)

From the Mysql 8 Reference:

  

您不能使用算术比较运算符(例如=,<或<>)来   测试NULL。因为任何算术比较的结果   NULL也是NULL,您不能从中获得任何有意义的结果   比较。

答案 1 :(得分:2)

在mysql中,字符串列可以为空=''或NUL(未分配值)

所以您应该使用不为空

  SELECT * FORM my_table where some_column <> '';

  SELECT * FORM my_table where some_column  != '';

或不等于值

  SELECT * FORM my_table where some_column <> 'my_value';
  SELECT * FORM my_table where some_column != 'my_value';

对于非null,必须使用特殊运算符IS NOT NULL

SELECT * FORM my_table where some_column IS NOT NULL;