当前位置: 首页 > 知识库问答 >
问题:

Postgres jsonb按动态路径获取

龚远
2023-03-14

有没有可能在postgres中做这样的事情:

do $$
declare
  v_key text;
  v_json jsonb;
begin
  v_key := 'id';
  v_json := jsonb_build_object(
    'id', jsonb_build_object('nest_id',1)
  );
  raise notice '%', v_json #> '{'||v_key||'}'->>'nest_id';
end$$

错误:运算符不存在:jsonb#>TEXT
没有与给定名称和参数类型匹配的运算符。您可能需要添加显式类型转换。

共有1个答案

裘禄
2023-03-14

运算符#>的右操作数类型是文本数组。使用数组[...]表示法:

raise notice '%', v_json #> array[v_key]->>'nest_id';

或格式化数组文字:

raise notice '%', v_json #> ('{'||v_key||'}')::text[]->>'nest_id';
 类似资料:
  • 我有以下(很大= 我有一个文件,它定义了我要提取的字段及其路径: 因此,HotelName的路径是:。 现在我想了解每家酒店的信息。我无法为它们创建类(如这里),因为脚本必须是动态的,并且将传递具有不同定义文件的不同XML文件。 我如何通过使用路径来解决这个问题,没有类,内存使用率低(= //编辑:一切都已实现。我只需要一种方法来遍历酒店,并使用我拥有的路径获取它们的值。

  • 这篇文章和上一篇cesium编程中级(六)全球视频纹理一样,也是跟群友一起讨论时想出的解决方案^^ 起因是群友希望完成一个功能,在加载czml数据之后,有物体沿着czml中的路径运动,然后运动过程中,会每个几秒钟在路径最后添加一个点,希望能看到路径动态改变而且物体的移动连贯 这里其实重要的点有两个 1. 路径后面每隔一段时间添加一个点 2. 物体连贯运动(这一点是在完成之后,回过头来反思直接写出来

  • 我在Eclipse中开发了一个API,它部署在ApacheTomcat服务器上,修改保存在服务器根文件夹中的XML文件。 ApacheTomcat安装在我的系统中的D驱动器中,因此我在API中对该路径进行了如下硬编码 此外,我还将服务器配置为使用端口8080,因此我还将URI路径硬编码到API中,如下所示 而且效果很好。 但现在我想在使用ApacheTomcat的不同系统上以WAR文件的形式部署相

  • 问题内容: 我正在使用ui-router 0.2.8。我想根据设备宽度加载模板。我可以毫无问题地获得设备的宽度,将其设置在范围等,但我可以弄清楚如何将其绑定到$ stateParams。我在另一个控制器中有scope变量,可以访问该状态的控制器,但状态本身不可用。我试过了templateProvider,但这只是返回一个字符串。为了使它起作用,我还能尝试什么? 问题答案: 您可以在事件中访问状态参

  • 我正在尝试使用WireMock创建动态模拟。我有一个情况,如果我指定URL,如 <代码>http://localhost:8989/api/account/121 那我应该收到这样的回复: 简而言之,path param在响应体中返回,但是我不确定应该如何捕获121并使用wiremock在响应中返回它。 对于这种请求 或者 我可以使用什么,所以响应将过滤掉id和角色并放入响应中。 我正在使用独立的

  • 问题内容: 我想动态更改log4j日志文件的路径和文件名。 我已经阅读了很多页面,几乎每个页面都告诉我应该使用此处的系统属性: [如何动态更改log4j日志文件?](http://codingdict.com/questions/141150 所以我的log4j.properties文件看起来像这样: 在我的主要方法中,我将设置新的系统属性: 但是我只是得到一个错误: 当我尝试使用以下命令读取设置