postgreSql查询复杂json数组字段

2023-05-16

因为在生产环境中使用到两次 故而记录一下对复杂json字段提取字段值的SQL

先看数据格式:假设表名为 ry;下面的数据格式是我们的字段ryxx

{
    "bh": "123",
    "jbxx": [{
        "xm": "张三",
        "nl": "30"
    },{
        "xm": "李四",
        "nl": "35"
    }]
}

问题来了 我要去ryxx里面的所有人的姓名 那么改怎么取呢? 可以先把ryxx这个字段查出来

select ry.ryxx::json->>'jbxx' jbxx from ry

查出来的结果 肯定就是

jbxx
[{"xm": "张三","nl":"'30"},{"xm": "李四","nl": "35"}]

这里使用json的取值法 可以很轻松取出json对象里面的某个字段 但是这里取到的结果 却成了json数组的格式了,这里再使用字段转json格式再->>取值的方法就不适用了。

这里需要使用的就是一个函数:json_array_elements  需要注意的是 json_array_elements需要处理的是json数组格式的字段 如果这个字段是"[{},{}]"这种格式的 就可以直接使用,但是前提是需要把这个字段转为json格式;

select json_array_elements((ryxx::json->>'jbxx')::json) jbxx from ry

到这里 我们就又拿到了"{}"这种json对象了,所以json_array_elements的作用是什么?就是拆解数组,看下结果:

jbxx
{"xm": "张三","nl":"'30"}
{"xm": "李四","nl": "35"}

 这下再回到最开始的取值方法

select json_array_elements((ryxx::json->>'jbxx')::json)::json->> 'xm' xm jbxx from ry

上结果:

xm
张三
李四

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

postgreSql查询复杂json数组字段 的相关文章

  • 在 Node.js 中创建 JSON 数组

    我需要在用 Node js 编写的服务器中创建一个 JSON 字符串 以便在请求时发送到客户端 问题是这个 JSON 取决于服务器中的可用数据 因此 JSON 数组的大小并不总是相同 我已经尝试了一整天 但尽管我感觉很接近 但我仍然不明白
  • 如何将 Json 放入 asynctask - Android

    我有一个连接到数据库并返回结果的 json 函数 它会执行此操作大约 15 次或根据数据库中有多少条评论执行此操作 json 函数位于 while 循环内 并重复自身 直到从数据库中获取所有评论或达到 15 条评论 问题是当应用程序加载评论
  • 将 Java pojo 转换为 json 字符串

    我有以下java类 public class TabularDescriptor extends ReportDescriptor private String generatorClass private String targetCla
  • 如何在 psycopg2 线程连接类中重新连接到 postgreSQL? SSL SYSCALL 错误导致的失败:在 Azure 中检测到 EOF?

    我们的应用程序运行良好 直到我们将 PostgreSQL 移植到 Azure 中的 Microsoft 数据库 然后 我们的应用程序会定期无故失败 并且到处都会出现 SSL SYSCALL 错误 删除等 我们已经尝试了互联网上描述的所有内容
  • 基于列顺序的查询速度

    数据库中列类型的顺序对查询时间有影响吗 例如 具有混合排序 INT TEXT VARCHAR INT TEXT 的表的查询速度是否会比具有连续类型 INT INT VARCHAR TEXT TEXT 的表慢 答案是肯定的 这确实很重要 而且
  • 将 Google CloudSQL Postgres 数据库连接到 Data Studio

    我正在尝试将托管在 google Cloud Sql 实例中的 Postgres 数据库连接到 Data Studio 我已按照说明进行操作 在此处找到https support google com datastudio answer 7
  • 解析错误:第 2 行第 0 列的数字文字无效

    我正在尝试读取一个大的 json 数据结构 我收到消息 解析错误 第 2 行第 0 列的数字文字无效 我正在使用的命令是下一个 n rules echo rulebase list jq total 该文件在第一层次结构中具有一个变量 该变
  • 在同一个表上组合两个 SQL SELECT 语句

    我想结合这两个 SQL 查询 SELECT FROM Contracts WHERE productType RINsell AND clearTime IS NULL AND holdTime IS NOT NULL ORDER BY g
  • 如何解析多态 JSON 数组?

    我有一个 JSON 格式的文件 其中包含个人用户的记录 一些用户的记录中间有一个评论字段 我只想解析顶级项目 全名 贡献者姓名 电子邮件 使用 Newtonsoft JSON 解析器 但我似乎无法让它识别单个对象 当我将整个字符串解析为一个
  • 将新属性动态添加到 Node 中现有的 JSON 数组中

    我需要添加当前 JSON 中不存在的属性 json 对象如下所示 var jsonObj result OK data 我想在 数据 中添加温度 我可以像下面那样做 jsonObj data push temperature 然后 我想在
  • Node.js - 异步 JSON 查询

    如果这是一个愚蠢的问题 我深表歉意 但我对 Javascript 很陌生 而 Node js 确实让我很头疼 因为它是异步的 我的目标是从 API 查询 JSON 对象并能够使用它 我试图寻找关于我应该做什么的问题和答案 但它们对我来说都没
  • 即使将“enable_seqscan”设置为关闭后,也未使用数组列上的 GIN 索引?

    根据推荐this https stackoverflow com questions 4058731 can postgresql index array columns comment10357041 4059785评论 我建立了一个 i
  • Postgresql插入触发器设置值

    假设在 Postgresql 中 我有一个表T它的一栏是C1 我想在新记录添加到表中时触发一个函数T 该函数应该检查列的值C1在新记录中 如果它为 null 空 则将其值设置为 X 这可能吗 您需要触发器是正确的 因为为列设置默认值对您不起
  • IIS 上托管的 WCF 服务无法运行

    我想构建一个公开 basicHTTP 端点和 webHTTP 端点的服务 如果我在运行模式下使用 VS2010 测试以下项目 一切都很好 但我想在 IIS 中托管服务 本地或远程 并通过测试 服务 svc 我将我的网站托管到本地 IIS 中
  • AWS Lambda 函数误解了 python 中的事件字典?

    我正在尝试将谷歌日历 API 部署到 AWS Lambda 由于我在从事件字典中提取值时遇到问题 由 lambda 从 POST 请求的 JSON 负载创建 因此我创建了一个玩具函数来测试 def handler event context
  • 根据内容将 JSON 动态反序列化为派生类型?

    在我作为一个业余项目编写的小库中 我使用 RestSharp 从 Web API 获取 Json 反序列化为模型类对于简单类型来说效果很好 但在某些端点 结果类型在请求时未知 或不清楚 具体来说 它是 GuildWars2 API v1 一
  • 如何进行 PostgreSQL 交叉表查询,列中缺少值

    我正在尝试使用 PostgreSQL 9 5 交叉表查询创建周转时间报告 其中推荐分为第 1 2 3 4 gt 4 天 请参见下面的输出 但是 如果我运行查询并且第 2 天的值丢失 则我的查询可以正常工作 整行将向左移动一个单元格 所以第二
  • 将此 MySQL 查询转换为 PyGreSQL

    我正在开发一个 Ruby 应用程序 它使用 mysql 函数 XOR 和 BIT COUNT 不过 我现在需要在运行 PyGreSQL 的 Heroku 上运行该应用程序 我找不到任何可以帮助我的 PyGreSQL 文档 那么任何人都可以翻
  • Twitch API - 无法使用 PHP 获取身份验证令牌

    stackoverflow 的成员们大家好 我不是一个喜欢寻求帮助的人 但在这种情况下 我认为这是解决我的问题的唯一方法 谷歌并没有给我太大帮助 所以 我的问题 我想使用 Twitch API 获取一些数据 听起来很容易 我希望是这样 下面
  • eventSources 到事件 Json,完整日历

    我正在尝试从 eventSources 获取 json 调用到我的事件 我在 eventSources 中返回的 json 是 title Title Test start 1305841052 当我将此字符串传递到事件中时 它会正确显示日

随机推荐