【问题标题】:Postgres with json column带有 json 列的 Postgres
【发布时间】:2016-04-17 03:54:49
【问题描述】:

我在 Postgres 数据库中有一个包含 json 的列

{"predict":[{"method":"A","val":1.2},{"method":"B","val":1.7}]}

我想将两个 val 提取为单独的列。有没有办法在 Postgres 中做到这一点?

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    Postgres 在 9.2 中引入了 JSON typesfunctions and operators。如果您的列是 JSON 类型,您可以使用它们进行提取。

    【讨论】:

      【解决方案2】:

      如果json 始终具有您指定的结构(即一个键“预测”,它包含一个包含两个 JSON 对象的数组,每个对象都有一个“方法”和一个“val”键),那么解决方案很简单:

      SELECT ((my_json->'predict')->>0)->'val' AS method_a,
             ((my_json->'predict')->>1)->'val' AS method_b
      FROM my_table;
      

      如果结构可能有所不同,那么您必须告诉我们更多有关它的信息,以便为您提供解决方案。

      【讨论】:

      • 该列是文本,所以我将其转换为 JSON,然后我不断收到此错误 ERROR: operator does not exist: json -> unknown Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.
      • 能否请您输入您使用的确切命令,以便我查看您如何使用演员表?
      猜你喜欢
      • 1970-01-01
      • 2018-11-07
      • 2015-03-27
      • 2015-10-09
      • 2018-01-18
      • 1970-01-01
      • 1970-01-01
      • 2020-05-24
      • 2015-08-13
      相关资源
      最近更新 更多