我有一个如下所示的表格:
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。有办法做到这一点吗?
最佳答案
如果您使用 MySQL 5.7.8 或更高版本,您可以利用那里支持的 JSON 数据类型:
https://dev.mysql.com/doc/refman/5.7/en/json.html
然后,您可以使用 JSON 路径表达式从字段中提取值。
否则,您要么只能通过 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
关于mysql - 如何从json字段获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34190843/