【问题标题】:Postgresql terminal throws illegal array element error when trying to type JSONPostgresql 终端在尝试输入 JSON 时抛出非法数组元素错误
【发布时间】:2020-12-15 18:29:16
【问题描述】:

我正在尝试创建一个递归 JSON 相等运算符。现在的问题是,由于某种原因,当我在 PL-PGSQL 匿名块中输入 JSON 文字进行测试时,它不断抛出非法数组元素语法错误。

下面是我当前的代码。

DO $$
    DECLARE
        keys1 text[];
        keys2 text[];
        json1 json;
    BEGIN
        json1 := '{"a5":16,"b2":14}'::json;
        SELECT * FROM json_object_keys(json1) into keys1;
    END
$$;

【问题讨论】:

    标签: sql arrays json postgresql stored-procedures


    【解决方案1】:

    问题在于select 语句的into 子句。 json_object_keys() 返回一个 set 文本,即由 1 列和 0 到 N 行组成的结果集。您不能将其分配给声明为文本数组的变量

    在不更改目标变量类型的情况下使赋值成为可能的一种解决方法是使用array_agg()

    select array_agg(k) into keys1 from json_object_keys(json1) as x(k);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-19
      • 1970-01-01
      • 2016-08-18
      • 2023-01-14
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多