虽然我可以
SELECT elem[1], elem[2]
FROM ( VALUES ('1,2'::TEXT) ) AS q(arr),
LATERAL CAST(String_To_Array(q.arr, ',') AS INT[]) AS elem
;
使用显式调用CAST
,我不能
SELECT elem[1], elem[2]
FROM ( VALUES ('1,2'::TEXT) ) AS q(arr),
LATERAL String_To_Array(q.arr, ',')::INT[] AS elem
;
使用隐式调用::
运算符:
错误:“::”处或附近的语法错误
另一个CAST
需要显式的位置:
CREATE INDEX ON ... ( CAST(<straw> AS <gold>) );
我怀疑是否存在语法原因,例如使用额外的括号 - 这在这里是不正确的。
此时是否需要显式函数调用作为低级实现的一部分?或者它是否遵循任何语言规则?