PostgreSQL 中的 add equals 运算符是啥? [复制]

Posted

技术标签:

【中文标题】PostgreSQL 中的 add equals 运算符是啥? [复制]【英文标题】:What is the add equals operator in PostgreSQL? [duplicate]PostgreSQL 中的 add equals 运算符是什么? [复制] 【发布时间】:2020-07-27 10:05:23 【问题描述】:

在 Oracle SQL 中,有一个 (+)= 运算符可以添加等于。

我一直在网上搜索,但找不到 PostgreSQL 语法的等价物,这个运算符是否存在于 PostgreSQL 中?如果没有,我将如何实现相同的功能?

提前谢谢你。

【问题讨论】:

如果您的意思是 Oracle 的旧外连接语法,那么 @pifor 是正确的。但是你没有提到 join 所以也许你有另一个结构。让 J=1,K=3,现在 J+=K,那么 J 是 4?好吧,Postgres 中没有这样的运算符,只是规划旧的 J=J+K。 【参考方案1】:

外连接是documented in PostgreSQL.

这也记录在Oracle SQL Reference 中,上面写着:

Oracle 建议您使用 FROM 子句 OUTER JOIN 语法 而不是 Oracle 连接运算符。使用 Oracle 连接运算符 (+) 遵循以下规则和 限制,不适用于 FROM 子句 OUTER JOIN 语法:

您不能在还包含 FROM 子句连接语法的查询块中指定 (+) 运算符。

(+) 运算符只能出现在 WHERE 子句中,或者在左相关上下文中(指定 TABLE 子句时) FROM 子句,只能应用于表或视图的列。

如果 A 和 B 由多个连接条件连接,则必须在所有这些条件中使用 (+) 运算符。如果你不这样做,那么 Oracle 数据库将只返回从简单的 加入,但没有警告或错误提示您不加入 有外部连接的结果。

如果您在外部查询中指定一个表而在内部查询中指定另一个表,则 (+) 运算符不会产生外部联接。

注意:在 Oracle PL/SQL 中既没有 += 也没有 +:= 运算符:

SQL> declare
  2  i numeric := 0;
  3  begin
  4   i+:=1;
  5  end;
  6  /
 i+:=1;
  *
ERROR at line 4:
ORA-06550: line 4, column 3:
PLS-00103: Encountered the symbol "+" when expecting one of the following:
:= . ( @ % ;
The symbol "+" was ignored.


SQL> --
SQL> declare
  2  i numeric := 0;
  3  begin
  4   i+=1;
  5  end;
  6  /
 i+=1;
  *
ERROR at line 4:
ORA-06550: line 4, column 3:
PLS-00103: Encountered the symbol "+" when expecting one of the following:
:= . ( @ % ;


SQL> show errors
No errors.
SQL> --
SQL> declare
  2  i numeric := 0;
  3  begin
  4   i := i + 1;
  5  end;
  6  /

PL/SQL procedure successfully completed.

SQL> 

【讨论】:

以上是关于PostgreSQL 中的 add equals 运算符是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL 两个连接和它们之间的 NOT EQUAL 子句的性能

java的equals方法问题。

HashSet——add remove contains方法底层代码分析(hashCode equals 方法的重写)

java中hashcode和equals这两个方法的用法?

java中equals方法的问题

PostgreSQL:在 Rails 迁移中使用 add_column "after" 选项