在 MySQL 中使用正确的或更好的不等于运算符
-
20-09-2019 - |
题
两种(语义等效)方法中哪一种更适合测试不平等?
'foo' != 'bar'
(感叹号和等号)'foo' <> 'bar'
(小于和大于 V 形符号在一起)
MySQL 文档清楚地表明它们之间没有区别,但有些人似乎只执着于以一种或另一种方式进行操作。也许这只是另一个毫无意义的 vi vs.emacs 存在争议,但是当其他人阅读您的代码(以及您的查询)时,保持一定的一致性很有用。
<>
看起来很像 <=>
这是一个未充分利用的运算符,但可能会导致快速浏览时产生混乱,因为两者几乎相反(除了明显的 NULL
例)。
解决方案
在所有条件相同的情况下, <> 应该是首选,因为它符合 sql 标准并且在技术上更可移植......
!= 是非标准的,但大多数数据库都实现了它。
sql:2008语法:
<not equals operator> ::=
<>
其他提示
很明显。
这 !字符位于美国键盘的西北角。
微软总部位于美国西北角。
所以。 <>
是对微软的致敬。
!=
是对微软的拒绝。
这是一个秘密的政治密码。
<> 是 SQL-92 标准中唯一的一个。
DBA 通常喜欢 <>,程序员喜欢 !=。只是一个观察:-)
这 <>
运算符是 SQL 标准中的运算符,因此大多数了解 SQL 的人都会习惯它,或者至少知道它。我自己甚至没有意识到 !=
直到最近,运算符还可以在某些 SQL 方言中使用。
正如您所注意到的,人们倾向于只使用其中一种,这是一种很好的方法,至少在逐个项目的基础上是如此。无论您选择使用哪种,都要保持一致。
不隶属于 StackOverflow