我已经看到了SQL同时使用!=,并<>为不等于。首选语法是什么,为什么?
我喜欢!=,因为<>让我想起Visual Basic。
NOT (A = B)。
我已经看到了SQL同时使用!=,并<>为不等于。首选语法是什么,为什么?
我喜欢!=,因为<>让我想起Visual Basic。
NOT (A = B)。
Answers:
从技术上讲,如果您使用的是SQL Server AKA T-SQL,它们的功能相同。如果您在存储过程中使用它,则没有性能上的理由要使用另一个。然后归结为个人喜好。我更喜欢使用<>,因为它符合ANSI。
您可以在...找到指向各种ANSI标准的链接。
!=它,因为它在我使用过的每种受C影响的语言中都存在,并且因为Python文档说:“形式<>和!=等价物;为了与C一致,!=是首选;!=下面提到<>的地方也被接受。该<>拼写被认为是过时的“。但是SQL不是Python!
<>了!=专门为ANSI合规性,例如,在微软出版社培训套件70-461考试,“查询的Microsoft SQL Server”,他们说:“至于何时选择标准形式的例子,T-SQL支持两个“不等于“运算符:<>和!=。前者是标准的,而后者则不是。这种情况应该很简单:选择标准的!”
大多数数据库都支持!=(流行的编程语言)和<>(ANSI)。
同时支持!=和的数据库<>:
!=和<>!=和<>!=和<>!=和<>!=和<>!=和<>!=和<>!=和<>!=和<>支持ANSI标准算,数据库独家:
NOT (a = b)而不是(a <> b)或(a != b)。内部是否相同?
'<>'来自SQL-92标准,并且'!='是专有的 T-SQL运算符。它在其他数据库中也可用,但是由于它不是标准的,因此您必须视具体情况而定。
在大多数情况下,您会知道要连接到哪个数据库,因此这并不是真正的问题。最糟糕的是,您可能必须搜索并替换SQL。
!=,它不是其中的一部分。即使出于所有实际目的,它都是事实上的标准,我们也不应混淆什么是标准功能,哪些不是标准功能。
ANSI SQL标准定义<>为“不等于”运算符,
http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt(5.2 <token> and <separator>)
!=根据ANSI / SQL 92标准,没有运算符。
<> 是根据SQL-92标准的有效SQL。
http://msdn.microsoft.com/zh-CN/library/aa276846(SQL.80).aspx
就SQL Server而言,它们既有效又相同,
https://docs.microsoft.com/zh-cn/sql/t-sql/language-elements/not-equal-to-transact-sql-exclamation
!=尽管不是非ANSI,但更符合SQL作为可读语言的真正精神。它尖叫不相等。
<>说这对我来说(小于,大于)很奇怪。我知道它的意图是小于或大于因此不相等,但这是说一个很简单的事情的一种非常复杂的方式。
我只是不得不进行一些长时间的SQL查询,并将它们精心地放置到XML文件中,这是出于一系列我不愿讨论的愚蠢的原因。
可以说XML完全没有问题<>,我不得不将它们更改为XML !=并检查自己,然后才进行严格的破坏。
一种替代方法是使用NULLIF运算符,<>或者!=如果两个参数在Microsoft Docs中等于NULLIF,则返回NULL 。所以我相信WHERE子句可以修改<>和!=如下:
NULLIF(arg1, arg2) IS NOT NULL
正如我发现的那样,在某些情况下使用<>和!=不适用于日期。因此,使用上面的表达式确实很有必要。
<>在所有极端情况下都可以正常使用索引。此外,可读性肯定会差很多……
我更喜欢使用!=而不是,<>因为有时我会使用<s></s>语法来编写SQL命令。!=在这种情况下,使用起来更方便以避免语法错误。
它们都在T-SQL中被接受。但是,似乎使用<>的速度比快得多!=。我只是运行了一个使用的复杂查询,!=平均大约需要16秒才能运行。我将其更改为<>,查询现在平均需要大约4秒钟才能运行。这是一个巨大的进步!
尽管它们的功能相同,但!=表示“不等于”,而<>表示大于和小于存储的值。
考虑>=或<=,当将您的索引纳入查询条件时,这将很有意义...<>在某些情况下(具有正确的索引)运行速度会更快,但在其他情况下(无索引),它们将运行相同。
这也取决于您的数据库系统如何读取值!=和<>。数据库提供程序可能只是对其进行快捷方式设置并使它们的功能相同,所以这两种方式都没有任何好处。如上面显示的那样阅读。