<>和!=
在SQL中,<>
和 !=
都表示不等于,并且它们的功能在大多数情况下是相同的。然而,它们的使用可能会因数据库系统的不同而有所差异。
<>
是 SQL 标准中定义的不等于运算符,所以它在所有遵循 SQL 标准的数据库系统中都应该被接受。
另一方面,尽管 !=
在许多数据库系统中(如 MySQL,SQL Server,SQLite 等)都被接受,但它并不是 SQL 标准的一部分。在一些数据库系统中,如 Oracle,!=
并不被接受,只接受 <>
作为不等于运算符。
因此,通常建议使用 <>
,因为它有更广泛的兼容性。但如果你知道你的代码只会在接受 !=
的数据库系统上运行,那么使用 !=
也是可以的。
is null和= null
在SQL中,IS NULL
和= NULL
具有根本性的不同,这主要源于如何处理NULL值的方式。
IS NULL
:在SQL中,IS NULL
用于检查字段是否为NULL。例如,SELECT * FROM table WHERE column IS NULL;
会返回所有在”column”列中值为NULL的行。= NULL
:在SQL中,你可能期望= NULL
和IS NULL
具有相同的行为,但实际上不是这样的。根据SQL的标准,任何与NULL进行比较的操作(包括=
)都应返回未知,而不是真或假。所以,SELECT * FROM table WHERE column = NULL;
实际上不会返回任何行,即使存在具有NULL值的行。
这就是为什么在SQL中,如果你想要检查一个字段是否为NULL,你应该使用IS NULL
,而不是= NULL
。同样地,如果你想要检查一个字段是否不为NULL,你应该使用IS NOT NULL
,而不是!= NULL
或<> NULL
。