【问题标题】:Selecting/Querying a JSON for a variable Object in SQL在 SQL 中为变量对象选择/查询 JSON
【发布时间】:2022-10-02 18:55:47
【问题描述】:

我在以前看起来像这样的 SQL 数据库中有一个 JSON:

{   \"result\": {
        \"topResult\": {
            \"score\": 1}
    }
}

对于更大的查询,我想通过 SQL 选择此对象结构中的分数,我使用此运算符(或 JSON_extract)执行此操作:

object->>\'$.result.topResult.score\' AS \'Score\'

我现在遇到的问题是名称 \"topResult\" 是可变/不断变化的,因此此查询不再起作用(或至少仅针对特定情况)

我怎样才能让我的 Select 语句更通用一点,以便无论之前的对象如何仍然输出我的分数?

我的想法:

  • 我可以从 JSON 中的其他地方导出对象的名称 --> 我可以重复使用它作为别名、变量或连接来填充变量吗?

  • 是否有可能“跳过”或索引 JSON 对象?

  • 可以忽略之前的路径而只查找特定对象,如“分数”吗?

感谢您的提示!

    标签: mysql sql json object


    【解决方案1】:
    SELECT *
    FROM test
    CROSS JOIN JSON_TABLE(test.val,
                          '$.result.*' COLUMNS (score INT PATH '$.score')) jsontable;
    

    https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=46fbf88c6b4ce01b3cb5e0040c86451b

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      • 2019-06-14
      • 1970-01-01
      相关资源
      最近更新 更多