小编geo*_*lot的帖子

PostgreSQL - CAST vs :: LATERAL 表函数上的运算符

虽然我可以

SELECT elem[1], elem[2]
FROM   ( VALUES ('1,2'::TEXT) ) AS q(arr),
       LATERAL CAST(String_To_Array(q.arr, ',') AS INT[]) AS elem
;
Run Code Online (Sandbox Code Playgroud)

使用显式调用CAST,我不能

SELECT elem[1], elem[2]
FROM   ( VALUES ('1,2'::TEXT) ) AS q(arr),
       LATERAL String_To_Array(q.arr, ',')::INT[] AS elem
;
Run Code Online (Sandbox Code Playgroud)

使用隐式调用::运算符:

错误:“::”处或附近的语法错误

另一个CAST需要显式的位置:

CREATE INDEX ON ... ( CAST(<straw> AS <gold>) );
Run Code Online (Sandbox Code Playgroud)

我怀疑是否存在句法原因,例如使用额外的括号 - 这在这里是不正确的。

此时是否只需要显式函数调用作为低级实现的一部分?或者它是否遵循任何语言规则?

postgresql type-conversion cast operator

5
推荐指数
2
解决办法
1628
查看次数

标签 统计

cast ×1

operator ×1

postgresql ×1

type-conversion ×1