【问题标题】:Is there any difference between "!=" and "<>" in Oracle Sql?Oracle Sql中的“!=”和“<>”有什么区别吗?
【发布时间】:2012-05-25 22:09:08
【问题描述】:

我想知道Oracle中not equal这两个运算符&lt;&gt;!=之间是否有任何区别。

是否存在它们可以给出不同结果或不同性能的情况?

【问题讨论】:

标签: sql oracle


【解决方案1】:

不,在功能上完全没有区别。
(所有其他 DBMS 也是如此 - 它们中的大多数都支持这两种样式):

这是当前的 SQL 参考:https://docs.oracle.com/database/121/SQLRF/conditions002.htm#CJAGAABC

SQL 标准只为“不等于”定义了一个运算符,即&lt;&gt;

【讨论】:

  • != 更容易存储在 XML 文件中!
  • IS NOT 等价/同义/.. 到&lt;&gt;!= 吗?这三个可以同时使用吗?
【解决方案2】:

其实这个算子有四种形式:

<>
!=
^=

甚至

¬= -- worked on some obscure platforms in the dark ages

它们是相同的,但在需要逐字匹配(存储的大纲或缓存的查询)时会有所不同。

【讨论】:

  • 还有像NOT(x = y)!(x = y) 等变体?
  • 有趣!我不知道^=(当我第一次发布手册链接时,我自己看到了)。但是您关于缓存查询的观点很好。
  • @Dems: 在Oracle 中,布尔不是SQL 中的一等类型(与PL/SQL 不同)。 IE。你不能像在其他一些系统中那样SELECT 1 = 1 FROM dual。因此,布尔值有自己的一组运算符,仅在逻辑上下文中有效(WHEREHAVING 或类似的子句)。 NOT 是 Oracle 的 SQL (AFAIK) 中唯一的布尔否定运算符。
  • ¬= -- worked on some obscure platforms in the dark ages - 是的,它们被称为“IBM 大型机”。从男人是男人,女人是女人,恐龙在地球上漫游,电脑是水冷的时代开始。 :-)
【解决方案3】:

在大学里,我们被教导“最佳实践”是在为雇主工作时使用 !=,尽管上述所有运算符都具有相同的功能。

【讨论】:

  • SQL 标准(仅)将&lt;&gt; 定义为“不等于”运算符。所以我会考虑将其用作“最佳实践”
  • 有趣。可能必须检查我所学的所有其他内容是否符合 SQL 标准。感谢您指出。
  • 可能我的 C 遗产出来了,但我受不了 &lt;&gt; 而更喜欢 !=。主要是因为&lt;&gt; 在其“小于或大于”的说法中,对我来说,似乎假设数据类型具有隐式排序(这不一定是正确的,尽管对于所有 SQL 数据类型都是正确的),而 !=在非常纯粹的意义上说“不相等”。
  • 编码标准通常取决于雇主。如果您的雇主没有编码标准,那么团队最好选择一个公开的标准。
【解决方案4】:

根据这篇文章,!= 执行得更快

http://www.dba-oracle.com/t_not_equal_operator.htm

【讨论】:

  • 虽然很受欢迎,但遗憾的是,该网站并不是许多主题的可靠来源。这个问题之前讨论过here。尽管有赏金,但没有人能够创建一个测试用例来展示性能的显着差异。但我的提议仍然有效 - 如果你能创建一个测试用例证明 != 比其他不等于运算符更快,我会给你 500 分的赏金。
猜你喜欢
  • 2012-04-27
  • 2014-10-14
  • 2014-10-20
  • 2014-08-22
  • 2014-05-15
  • 1970-01-01
  • 2020-09-17
  • 2010-11-13
相关资源
最近更新 更多