【问题标题】:Extract certain members of JSON array in MySQL在 MySQL 中提取 JSON 数组的某些成员
【发布时间】:2018-11-16 01:35:39
【问题描述】:

我在 MySQL 中有一个表,其中每一行都包含从另一个系统返回的 JSON。 JSON 将类似于:

[{"userId": "Dave"},{"userId": "Mary", "errorCode" : "DB Fail"}, {"userId": "Lorenza", "errorCode": "Web Error"}]

我只对包含错误代码的数组成员感兴趣。将来,这些将被解析为自己表的单独行,但与此同时,MySql 是否提供了一种仅提取这些并带有错误代码的方法?

我只能使用 JSON_EXTRACT 来提取错误代码

JSON_EXTRACT(jsonData, '$[*].errorCode') AS errorCodes

但我真的想要其他成员(上例中的 userId)

【问题讨论】:

标签: mysql json


【解决方案1】:

您可以使用 JSON_CONTAINS 函数查找带有 errorCode 的记录,然后对这些记录使用 JSON_EXTRACT。将 JSON_CONTAINS 放在 where 子句中

【讨论】:

    【解决方案2】:

    我不认为你可以在没有元素数量边界的情况下使用单个查询来做到这一点,但你可以使用存储过程来运行循环。

    例如每次迭代都会运行 LOCATE 以找到“errorCode”的位置,并使用该位置运行 SUBSTR 和/或 SUBSTRING_INDEX 以获取用户 ID 值并将其附加到另一个变量。循环变量将只是 LOCATE 查询中使用的偏移量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-10
      • 2015-02-11
      • 1970-01-01
      相关资源
      最近更新 更多