我见过同时使用两者的SQL!=<>表示不相等。首选的语法是什么?为什么?

我喜欢!=,因为<>让我想起了Visual Basic。


当前回答

“<>”来自SQL-92标准,“!=”是一个专有的T-SQL运算符。它也可以在其他数据库中使用,但由于它不是标准的,您必须根据具体情况进行处理。

在大多数情况下,您将知道您正在连接的数据库,因此这不是真正的问题。最坏的情况下,您可能需要在SQL中进行搜索和替换。

其他回答

“<>”来自SQL-92标准,“!=”是一个专有的T-SQL运算符。它也可以在其他数据库中使用,但由于它不是标准的,您必须根据具体情况进行处理。

在大多数情况下,您将知道您正在连接的数据库,因此这不是真正的问题。最坏的情况下,您可能需要在SQL中进行搜索和替换。

您可以在T-SQL中使用任何您喜欢的内容。文件显示,它们的功能相同。我更喜欢!=,因为它读起来“不等于”我(基于C/C++/C#)的想法,但数据库专家似乎更喜欢<>。

我喜欢使用!=而不是<>,因为有时我使用<s></s>语法来编写SQL命令。使用!=在这种情况下,避免语法错误更方便。

另一种选择是使用NULLIF运算符,而不是<>或!=如果两个参数在Microsoft Docs中等于NULLIF,则返回NULL。所以我相信WHERE子句可以为<>和!=修改如下所示:

NULLIF(arg1, arg2) IS NOT NULL

正如我发现的,使用<>和!=在某些情况下不适合约会。因此,使用上述表达式是必要的。

大多数数据库都支持!=(流行编程语言)和<>(ANSI)。

支持两者的数据库!=和<>:

Apache Derby 10.6:!=和<>IBM Informix Dynamic Server 10:!=和<>InterBase/Firebird:!=和<>Microsoft SQL Server 2000/2005/2008/2012/2016:!=和<>Mimer SQL 11.0:!=和<>MySQL 5.1:!=和<>Oracle 10g:!=和<>PostgreSQL 8.3:!=和<>Sybase Adaptive Server Enterprise 11.0:!=和<>

仅支持ANSI标准运算符的数据库:

IBM DB2 UDB 9.5:<>Microsoft Access 2010:<>