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

我已经看到SQL不等于中同时使用!=<>。首选语法是什么,为什么?

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

1155067 次浏览

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

在大多数情况下,您会知道要连接到哪个数据库,所以这不是问题。最坏的情况下,您可能需要在SQL中进行搜索和替换。

ANSISQL标准将<>定义为“不等于”运算符。

http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt5.2 <token> and <separator>

根据ANSI/SQL92标准,没有!=操作符。

你可以在T-SQL中使用任何你喜欢的。留档表示它们的功能相同。我更喜欢!=,因为它读起来“不等于”我的(C/C++ /C#)思想,但数据库大师似乎更喜欢<>

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

您可以在WEB找到各种ANSI标准的链接。

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

我知道C语法!=在SQLServer中是因为它的Unix传统(回到赛贝斯SQLServer时代,在MicrosoftSQLServer 6.5之前)。

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

同时支持!=<>的数据库:

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

  • IBMDB2 UDB 9.5:<>
  • Microsoft Access 2010:<>

!=尽管不是ANSI,但更符合SQL作为可读语言的真正精神。它尖叫着不平等。<>表示对我来说(小于,大于)这很奇怪。我知道意图是它要么小于,要么大于,因此不等于,但这是一种非常复杂的表达方式,非常简单。

我只需要进行一些长时间SQL的查询,并将它们亲切地放入XML文件中,因为一大堆愚蠢的原因我不会进入。

可以说XML与<>根本没有关系,我不得不将它们更改为!=并检查自己,然后才会破坏自己。

似乎微软自己更喜欢<>而不是!=,这可以从他们的表约束中看出。我个人更喜欢使用!=,因为我清楚地将其阅读为“不相等”,但是如果您输入[field1 != field2]并将其保存为约束,下次查询时,它将显示为[field1 <> field2]。这对我来说是正确的方法是<>

它们都被T-SQL接受。然而,似乎使用#0比#1快得多。我刚刚运行了一个使用!=的复杂查询,平均运行时间约为16秒。我将它们更改为<>,查询现在平均运行时间约为4秒。这是一个巨大的改进!

一种替代方法是使用NULLIF运算符而不是<>!=,如果两个参数等于Microsoft Docs中的NULLIF,则返回NULL。所以我相信可以对<>!=修改WHERE子句如下:

NULLIF(arg1, arg2) IS NOT NULL

我发现,在某些情况下,使用<>!=不适用于date。因此使用上面的表达式是必要的。

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

两者都有效,我认为任何差异都可以忽略不计!#36825;,提高工作效率!

你的剧本有什么价值?它做了什么?它将如何对业务做出贡献?它会赚更多的钱吗?

关注这些目标,而不是程序员的偏好。这就像C#或Visual Basic语言哪个更好。好像最终用户关心用什么来编写应用程序?

最终用户关心的是你的应用程序能做什么。”””我怎么能帮助他在做什么。