如何从json字段获取值

时间:2015-12-09 23:15:17

标签: mysql sql

我有一个看起来像这样的表:

CREATE TABLE `testtable` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `data` json DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

json字段的数据如下所示:

{'a1': 'Title', 'b17': 'Message'}

我想选择id和a1(json)。我不想要b17。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

如果您使用的是MySQL 5.7.8或更高版本,则可以利用其中支持的JSON数据类型:

https://dev.mysql.com/doc/refman/5.7/en/json.html

然后,您可以使用JSON Path表达式从字段中提取值。

否则,您无法通过SUBSTR()和POSITION()函数提取值 - 下面的示例 - 假设值的格式足够可预测,或者在SQL之外处理结果。

SELECT id, SUBSTR(hackedJSON, 1, POSITION("'" IN hackedJSON) - 1) a1
  FROM (
        SELECT id, SUBSTR(data, POSITION("'a1':" IN data) + 7) hackedJSON
          FROM testtable) a