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