我有一个表,看起来像这样:
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有没有办法做到这一点?
发布于 2015-12-10 07:29:01
如果您使用的是JSON5.7.8或更高版本,则可以利用那里支持的MySQL数据类型:
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) ahttps://stackoverflow.com/questions/34190843
复制相似问题