我看到SQL
同时使用!=
和<>
不等于 。首选语法是什么?为什么?
我喜欢!=
,因为<>
提醒我Visual Basic
。
答案 0 :(得分:696)
大多数数据库支持!=
(流行的编程语言)和<>
(ANSI)。
支持!=
和<>
的数据库:
!=
and <>
!=
and <>
!=
and <>
!=
and <>
!=
和<>
!=
and <>
!=
and <>
!=
and <>
!=
and <>
支持ANSI标准运算符的数据库,完全:
答案 1 :(得分:506)
从技术上讲,如果您使用的是SQL Server AKA T-SQL,它们的功能相同。如果您在存储过程中使用它,则没有性能原因可以使用一个而不是另一个。然后归结为个人偏好。我更喜欢使用&lt;&gt;因为它符合ANSI标准。
您可以在...
找到各种ANSI标准的链接答案 2 :(得分:104)
'<>'
来自SQL-92 standard,'!='
是proprietary T-SQL运算符。它也可以在其他数据库中使用,但由于它不是标准的,因此必须根据具体情况进行处理。
在大多数情况下,您将知道您要连接的数据库,因此这不是一个真正的问题。在最坏的情况下,您可能需要在SQL中进行搜索和替换。
答案 3 :(得分:41)
ANSI SQL标准将<>
定义为“不等于”运算符,
http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt(5.2 <token> and <separator>
)
根据ANSI / SQL 92标准,没有!=
运算符。
答案 4 :(得分:30)
<>
是根据SQL-92标准的有效SQL。
http://msdn.microsoft.com/en-us/library/aa276846(SQL.80).aspx
答案 5 :(得分:21)
它们在SQL Server,
方面都有效且相同https://docs.microsoft.com/en-us/sql/t-sql/language-elements/not-equal-to-transact-sql-exclamation
答案 6 :(得分:16)
似乎微软自己更喜欢<>
到!=
,因为他们的表约束已经证明了这一点。我个人更喜欢使用!=
,因为我清楚地将其视为“不相等”,但如果您输入[field1 != field2]
并将其保存为constrait,则下次查询时,它将显示为{{ 1}}。这告诉我,正确的方法是[field1 <> field2]
。
答案 7 :(得分:14)
!=
,尽管是非ANSI的,但它更像是一种可读语言的SQL。它尖叫不平等。
<>
说这对我来说(少于,大于),这只是奇怪的。我知道它的意图是小于或大于不相等,但这是一种非常简单的说法。
我只需要进行一些长时间的SQL查询,并将它们巧妙地放入XML文件中,因为我不会涉及到一大堆愚蠢的原因。
完全可以说XML并没有被<>
所取代,我不得不将它们更改为!=
并在我自行毁坏之前检查自己。
答案 8 :(得分:10)
您可以在T-SQL中使用任何您喜欢的内容。 The documentation说它们都以相同的方式运作。我更喜欢!=
,因为它与我的(基于C / C ++ / C#)头脑“不相等”,但数据库大师似乎更喜欢<>
。
答案 9 :(得分:8)
据我所知,C语法!=
由于其Unix版本而在SQL Server中(在Sybase SQL Server时代,在Microsoft SQL Server 6.5之前)。
答案 10 :(得分:5)
一种替代方法是使用除<>
或!=
之外的NULLIF运算符,如果两个参数相等NULLIF in Microsoft Docs,则返回NULL。所以我相信可以为<>
和!=
修改WHERE子句,如下所示:
NULLIF(arg1, arg2) IS NOT NULL
我发现,在某些情况下,使用<>
和!=
对日期不起作用。因此,使用上述表达式是必要的。
答案 11 :(得分:1)
我更喜欢使用!=
而不是<>
,因为有时我会使用<s></s>
语法来编写SQL命令。在这种情况下,使用!=
更方便避免语法错误。
答案 12 :(得分:-5)
它们都在T-SQL中被接受。但是,似乎使用 <>
的工作速度比!=
快得多。我刚刚运行了一个使用!=
的复杂查询,平均需要大约16秒才能运行。我将这些更改为<>
,现在查询平均需要大约4秒才能运行。这是一个巨大的进步!
答案 13 :(得分:-10)
虽然它们的功能相同,但!=
表示“不等于”,而<>
表示大于和小于存储的值。
考虑>=
或<=
,这在将索引分解为查询时会有意义... <>
在某些情况下会运行得更快(使用正确的索引),但是在其他一些情况下(无索引),它们将运行相同。
这还取决于数据库系统如何读取值!=
和<>
。数据库提供程序可能只是将其快捷方式并使它们的功能相同,因此无论如何都没有任何好处.PostgreSQL和SQL Server不会使其快捷;如上所示,它被阅读。