如何从postgresql中的数组中获取特定数据

问题描述

我的函数输出如下,

[
    {
        "id": 1,"firstName": "noufal","lastName": "P","email": "[email protected]","roles": [
            {
                "id": 1,"roleName": "Admin"
            },{
                "id": 2,"roleName": "Accuryn"
            }
        ]
    },{
        "id": 4,"firstName": "sample","lastName": "testuser","email": "[email protected]","roles": [
            {
                "id": 3,"roleName": "Lookup"
            },"roleName": "Accuryn"
            },{
                "id": 1,"roleName": "Admin"
            }
        ]
    },{
        "id": 50,"firstName": "hemanth","lastName": "np","email": "[email protected]","roleName": "Admin"
            }
        ]
    }
]

我的 Postgres 函数如下

CREATE OR REPLACE FUNCTION public.user_get_all()
 RETURNS TABLE(j json)
 LANGUAGE plpgsql
AS $function$
BEGIN
    RETURN QUERY
    SELECT row_to_json(u)
    FROM (select U.ID,FirsTNAME,LASTNAME,EMAIL,json_agg(to_json(rl.*)) as roles
          from USERS U
          LEFT JOIN ( select ur.USERID,((r.*))
          from USERS U
          left join USERROLES UR on U.ID =UR.USERID 
          left join ROLES R on R.ID =UR.ROLEID WHERE ur.ACTIVE =1 and r.ACTIVE =1
                  GROUP BY ur.ID,R.ID,R.ROLENAME) rl ON rl.USERID=u.ID 
      GROUP by U.ID,EMAIL) u;

END;
$function$
;

我需要更改角色输出。不需要数组。我需要角色:Admin,Accuryn only。 示例,下面给出了想要的输出

[
    {
        "id": 1,"roles":  "Admin","Accuryn"
    },"roles": "Lookup","Accuryn","Admin"            
    }
]

那么,如何像上面的例子一样获取输出。主要需要角色数组数据聚合。你能帮我找到解决办法吗。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)