我应该在 T-SQL 中使用!= 或 & lt;> 表示不相等吗?

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

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

答案

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

同时支持!=<>

支持 ANSI 标准的运营商, 专门数据库:

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

从技术上讲,如果您使用的是 SQL Server AKA T-SQL,它们的功能相同。如果您在存储过程中使用它,则没有性能上的理由要使用另一个。然后归结为个人喜好。我更喜欢使用 <>,因为它符合 ANSI。

您可以在... 找到指向各种 ANSI 标准的链接。

http://en.wikipedia.org/wiki/SQL

'<>'来自SQL-92 标准'!='专有的 T-SQL 运算符。它在其他数据库中也可用,但是由于它不是标准的,因此您必须视具体情况而定。

在大多数情况下,您会知道要连接到哪个数据库,因此这并不是真正的问题。最糟糕的是,您可能必须搜索并替换 SQL。

ANSI SQL 标准将<>定义为 “不等于” 运算符,

http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt(5.2 5.2 <token> and <separator>

根据 ANSI / SQL 92 标准,没有!=运算符。

<>是根据 SQL-92 标准的有效 SQL。

http://msdn.microsoft.com/zh-CN/library/aa276846(SQL.80).aspx

微软自己似乎更喜欢<>而不是!= ,这在表约束中得到了证明。我个人更喜欢使用!=因为我清楚地将其读取为 “不等于”,但是如果您输入[field1 != field2]并将其另存为一个等式,则下次查询时,它将显示为[field1 <> field2] 。这告诉我,正确的方法是<>

尽管不是 ANSI,但!=更符合 SQL 的可读性。它尖叫不相等。 <>说对我来说(小于,大于)太奇怪了。我知道这样做的目的是小于或大于等于不相等,但这是一种非常简单的表达方式。

我只是不得不进行一些长时间的 SQL 查询,并将它们精心地放置到 XML 文件中,这是出于一系列我不愿讨论的愚蠢的原因。

可以说 XML 根本不以<>失效,我不得不将它们更改为!=并检查自己,然后再进行严格的破坏。

您可以在 T-SQL 中使用任何您喜欢的东西。 该文档说,它们的功能相同。我更喜欢!= ,因为它在我(基于 C / C ++ / C#的)思想上读作 “不等于”,但是数据库专家似乎更喜欢<>

我知道由于 C 语言语法!=在 SQL Server 中是基于 Unix 的传统(早在 Sybase SQL Server 时代,在 Microsoft SQL Server 6.5 之前)。