在我的数据库中,有一个varchar(255)列,对于某些记录,它包含空值, 当我开枪
SELECT * FORM my_table where some_column <> NULL;
一无所获
但是被解雇了
SELECT * FORM my_table where some_column IS NOT NULL;
我有想要的记录
您能否解释一下它们之间的主要区别以及何时使用<>和!=运算符。
答案 0 :(得分:6)
您不能使用算术比较运算符(例如=,<或<>)来 测试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;