mysql - mysql 5.6 的自定义 json_extract 函数未按预期工作

标签 mysql json

我使用的是 mysql 5.6,因此使用自定义函数来提取 json 字段。如果每个 json 字段只有一个值,则工作正常,但如果有多个值,则工作失败。

Table extract
user_id,    cb_contactgroup
289,    [{"cb_mobile":"777777777","cb_phonefixedline":"666666666"}]
290,    [{"cb_mobile":"999999999","cb_phonefixedline":"888888888"}]
291,    [{"cb_mobile":"1111111111","cb_phonefixedline":"2222222222"},{"cb_mobile":"3333333333","cb_phonefixedline":"4444444444"}]

对于 user_id 291 应该有两行,但只有一行如下所示。

user_id, mobile,    phonefixedline
289,    777777777,  666666666
290,    999999999,  888888888
291,    3333333333, 4444444444

我正在使用以下功能。我不是技术人员,有人可以帮我纠正以下功能:

ELIMITER $$

DROP FUNCTION IF EXISTS `json_extract_c`$$

CREATE DEFINER=`root`@`%` FUNCTION `json_extract_c`(
  details TEXT,
  required_field VARCHAR (255)
) RETURNS TEXT CHARSET latin1
BEGIN
  RETURN TRIM(
    BOTH '"' FROM SUBSTRING_INDEX(
      SUBSTRING_INDEX(
        SUBSTRING_INDEX(
          details,
          CONCAT(
            '"',
            SUBSTRING_INDEX(required_field,'$.', - 1),
            '"'
          ),
          - 1
        ),
        '",',
        1
      ),
      ':',
      - 1
    )
  ) ;
END$$

DELIMITER ;

从选择查询的位置发布 How to get values from MySQL(5.6) column if that contains json document as string - @user3631341

最佳答案

因为我需要在 mysql 5.6 上使用 JSON_EXTRACT,所以我自己编写了一个原始函数的副本,可以像 mysql 5.7 中的 native 函数一样提取值

Link to source code

关于mysql - mysql 5.6 的自定义 json_extract 函数未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55076137/

相关文章:

javascript - 函数读取不传递给变量的 JSON 数据

javascript - 在Loadrunner中解析json响应

json - 如何在Jackson中以数组开头反序列化JSON文件?

mysql - 如何使用struts同步java web应用程序中的 Action 流?

条件下的 MySQL 组

php - 动态构建受限逻辑处理器

mysql - 在 MySQL 中存储发票

c# - 在 Json 反序列化期间解码 Html 编码的字符

PyPi 的 JSON API - 如何列出包?

需要强制 MYSQL 外键