我已经看到SQL在不等于中同时使用!=和<>。首选语法是什么,为什么?
SQL
!=
<>
我喜欢!=,因为<>让我想起了Visual Basic。
Visual Basic
<>是SQL-92标准的有效SQL。
http://msdn.microsoft.com/en-us/library/aa276846(SQL.80). aspx
对于SQL服务器,它们都是有效的和相同的,
https://learn.microsoft.com/en-us/sql/t-sql/language-elements/not-equal-to-transact-sql-exclamation
'<>'来自SQL-92标准,'!='是专有 T-SQL运算符。它也可以在其他数据库中使用,但由于它不是标准的,您必须根据具体情况进行处理。
'<>'
'!='
在大多数情况下,您会知道要连接到哪个数据库,所以这不是问题。最坏的情况下,您可能需要在SQL中进行搜索和替换。
ANSISQL标准将<>定义为“不等于”运算符。
http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt(5.2 <token> and <separator>)
5.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标准运算符专门的数据库:
!=尽管不是ANSI,但更符合SQL作为可读语言的真正精神。它尖叫着不平等。<>表示对我来说(小于,大于)这很奇怪。我知道意图是它要么小于,要么大于,因此不等于,但这是一种非常复杂的表达方式,非常简单。
我只需要进行一些长时间SQL的查询,并将它们亲切地放入XML文件中,因为一大堆愚蠢的原因我不会进入。
可以说XML与<>根本没有关系,我不得不将它们更改为!=并检查自己,然后才会破坏自己。
似乎微软自己更喜欢<>而不是!=,这可以从他们的表约束中看出。我个人更喜欢使用!=,因为我清楚地将其阅读为“不相等”,但是如果您输入[field1 != field2]并将其保存为约束,下次查询时,它将显示为[field1 <> field2]。这对我来说是正确的方法是<>。
[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命令。在这种情况下,使用!=更方便避免语法错误。
<s></s>
两者都有效,我认为任何差异都可以忽略不计!#36825;,提高工作效率!
你的剧本有什么价值?它做了什么?它将如何对业务做出贡献?它会赚更多的钱吗?
关注这些目标,而不是程序员的偏好。这就像C#或Visual Basic语言哪个更好。好像最终用户关心用什么来编写应用程序?
最终用户关心的是你的应用程序能做什么。”””我怎么能帮助他在做什么。