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 子句的性能