PostgreSQL的括号规则是否有总结指南?

PostgreSQL的括号规则是否有总结指南?,第1张

概述在数学和许多编程语言中(我认为也是标准SQL),括号 change precedence(首先评估要评估的部分)或增强可读性(对于人眼). 等效例子: SELECT array[1,2] @> array[1]SELECT (array[1,2]) @> array[1]SELECT array[1,2] @> (array[1])SELECT ((array[1,2]) @> (arra 在数学和许多编程语言中(我认为也是标准sql),括号 change precedence(首先评估要评估的部分)或增强可读性(对于人眼).
等效例子:

SELECT array[1,2] @> array[1]SELECT (array[1,2]) @> array[1]SELECT array[1,2] @> (array[1])SELECT ((array[1,2]) @> (array[1]))

但是SELECT 1 = ANY数组[1,2]是语法错误(!),SELECT 1 = ANY(数组[1,2])是有效的.为什么?

好的,因为“the manual says so”.但人类记住所有异常的逻辑是什么?
有关于它的指南吗?

我不明白为什么(表达式)在某些情况下与表达式相同,但在其他情况下则不然.

PS1:括号也用作值列表分隔符,如表达式IN(value [,…]).但是数组不是值列表,并且当(数组表达式)与数组表达式不同时,Postgresql中似乎没有一般规则.
此外,我使用数组作为示例,但这个问题/问题不仅仅是关于数组.

解决方法 “有一个总结指南吗?”,嗯……答案是否定的,所以:亲自动手!这个答案是一个Wiki,让我们写一下.

总结指南

让,

> F()一个通常的功能. (例如ROUND)
> L()一个类似函数的运算符(例如ANY)
> f类似于运算符的函数(例如current_date)
>运算符
> Op1,Op2是不同的 *** 作符
> A,B,C值或表达式
>表达式列表,如“(A,C)”

使用这些元素的规则是在形式中

>规则:笔记.

“纯粹的”数学表达

当Op,Op1,Op2是数学运算符(例如,– .*),而F()是数学函数(例如ROUND()).

标量表达式和“纯数组表达式”的规则:

> A Op B =(A Op B):括号是可选的.
> A Op1 B Op2 C:需要检查precedence.
>(A Op1 B)Op2 C:强制执行“第一(A Op1 B)”.
> A Op1(B Op2 C):执行“first(B Op2 C)”.
> F(A)=(F(A))= F((A))=(F((A))):括号是可选的.
> S =(S):外部括号是可选的.
> f =(f):括号是可选的.

具有类似函数的运算符的表达式

*** 作符的规则为ALL,ANY,ROW,SOME等.

> L(A)= L((A)):括号在参数中是可选的.
>(L(A)):Syntax ERROR.

……更多规则?请帮忙编辑.

总结

以上是内存溢出为你收集整理的PostgreSQL的括号规则是否有总结指南?全部内容,希望文章能够帮你解决PostgreSQL的括号规则是否有总结指南?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1160194.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存