打好基础——数据库——SQL的一些细节

<>和!=

在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中,你可能期望= NULLIS NULL具有相同的行为,但实际上不是这样的。根据SQL的标准,任何与NULL进行比较的操作(包括=)都应返回未知,而不是真或假。所以,SELECT * FROM table WHERE column = NULL;实际上不会返回任何行,即使存在具有NULL值的行。

这就是为什么在SQL中,如果你想要检查一个字段是否为NULL,你应该使用IS NULL,而不是= NULL。同样地,如果你想要检查一个字段是否不为NULL,你应该使用IS NOT NULL,而不是!= NULL<> NULL