MySql与lt&燃气轮机;NULL且不为NULL

MySql与lt&燃气轮机;NULL且不为NULL,mysql,sql,Mysql,Sql,在my db中有一个varchar(255)列,对于某些记录,它包含空值, 当我开枪的时候 SELECT * FORM my_table where some_column <> NULL; 我得到了想要的记录 您能否解释一下它们之间的主要区别以及何时使用和!=运算符。在mysql中,字符串列可以为空=''或NUL(未分配值) 所以你应该用的不是空的 SELECT * FORM my_table where some_column <> ''; 或不等于某个值

在my db中有一个varchar(255)列,对于某些记录,它包含空值, 当我开枪的时候

SELECT * FORM my_table where some_column <> NULL;
我得到了想要的记录


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

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

所以你应该用的不是空的

  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';


不能使用算术比较运算符,例如=,第二种是将值与SQL中的
NULL
进行比较的正确、有文档记录且标准的方法。出于所有实际目的,第一个是打字错误。
NULL-NULL
NULL
,不是真的。将
NULL
与任何其他值(包括
NULL
)进行比较总是
NULL
,因此无论比较运算符是什么,都不是true,除非它是
is NULL
is not NULL
。其他详细信息:
某些列=NULL
始终返回false。另外,
某些列NULL
总是返回false。@RobertKock-不,它不会-它返回
未知
/
NULL
。如果你的断言是正确的
NOT(some\u column=NULL)
将是正确的。@Damien\u我不知道这一点。忘记我的评论。那么何时使用和!=接线员?你需要或!=如果要检查字符串是否与字符串值不同,请参阅。。更新..答案
  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';
SELECT * FORM my_table where some_column IS NOT NULL;