【问题标题】:Parsing json with mysql用mysql解析json
【发布时间】:2016-04-03 07:23:12
【问题描述】:

如何在 MySQL 级别解析 Json? 我在 XAMPP 中的 MySQL 版本为 5.6.26

MySQL --version
MySQL  Ver 14.14 Distrib 5.6.26, for Win32 (x86)

我创建了一个表。

CREATE TABLE `message` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `data` text,
  PRIMARY KEY (`id`)
);

插入了一些行

INSERT INTO message (id,data) VALUES(1,'{"from":"chris","title":"Awesome Article","body":"Lorem ipsum dolor sit amet, consectetur adipiscing elit."}');
INSERT INTO message (id,data) VALUES(2,'{"from":"loren","title":"Another Article","body":"Lorem ipsum dolor sit amet, consectetur adipiscing elit."}');
INSERT INTO message (id,data) VALUES(3,'{"from":"jason","title":"How to run a query","body":"Lorem ipsum dolor sit amet, consectetur adipiscing elit."}');

我尝试获取 Json 值:

SELECT Json_get(data,'title') FROM message WHERE id=2;

我得到错误:

SELECT json_get(data,'title') FROM message WHERE id=2; ERROR 1305 (42000): FUNCTION mydatabasename.json_get 不存在

有人有想法吗?

【问题讨论】:

  • 我对它不是很有经验,但是我觉得如果你的数据是Json,你应该使用NoSQL数据库,或者如果你使用SQL数据库,你最好在业务逻辑中进行解析.看起来你试图让你的 SQL 数据库表现得像 NoSQL 一样......
  • 在 SQL 数据库中,您的方案将是静态的,您的 message 表将包含 Json 数据中的所有字段

标签: mysql json parsing


【解决方案1】:

您可以使用common_schema 解析 json 数据,尝试以下代码可能对您有所帮助:-

SELECT common_schema.extract_json_value(data,'title') FROM message WHERE id=2;

【讨论】:

  • 这个建议不起作用:SELECT common_schema.extract_json_value(data,'title') FROM message WHERE id=2; ERROR 1305 (42000): FUNCTION common_schema.extract_json_value 不存在
  • 你必须先安装common_schema
【解决方案2】:

将你的mysql更新到5.7,你可以使用MySQL预定义的JSON data type来处理你的json数据。

【讨论】:

    【解决方案3】:

    使用json_function,您可以做到这一点。

    SELECT JSON_EXTRACT(data,'$.title') FROM message WHERE id=1

    【讨论】:

      猜你喜欢
      • 2015-01-02
      • 1970-01-01
      • 1970-01-01
      • 2018-07-23
      • 1970-01-01
      • 2016-06-24
      • 2018-10-25
      • 1970-01-01
      • 2019-09-15
      相关资源
      最近更新 更多