Mysql 如何从json字段中获取值

Mysql 如何从json字段中获取值,mysql,sql,Mysql,Sql,我有一张这样的桌子: CREATE TABLE `testtable` ( `id` int(11) NOT NULL AUTO_INCREMENT, `data` json DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; {'a1': 'Title', 'b17': 'Message'} json字段中的数据如下所示: CREATE TABLE `testtable` ( `id`

我有一张这样的桌子:

CREATE TABLE `testtable` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `data` json DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
{'a1': 'Title', 'b17': 'Message'}
json字段中的数据如下所示:

CREATE TABLE `testtable` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `data` json DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
{'a1': 'Title', 'b17': 'Message'}

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

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

然后可以使用JSON路径表达式从字段中提取值

否则,您将不得不通过SUBSTR()和POSITION()函数提取值(下面的hokey示例),假设值的格式是可预测的,或者在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