我有下表def:
`CREATE TABLE `TestInfo` (
`Info` json DEFAULT NULL
) ;
`
使用json值插入两行。
INSERT INTO `TestInfo` (`Info`)
VALUES
('{
"statusCode": 200,
"result": {
"summary": {
"area": 0.0009904206008286565
}
}
} '
);
INSERT INTO `TestInfo` (`Info`)
VALUES
(
'{
"statusCode": 200,
"result": {
"summary": {
"area": 0.0009904206008286565,
"realty-society": {
"price-min": {
"property": "price-min",
"min": 110000.00000000001,
"max": 150000000,
"average": 31184468.085106384,
"sum": 1465670000
}
}
}
}
} '
);
当我运行查询时:
SELECT JSON_EXTRACT(Info, '$.result.summary')
FROM TestInfo ;
它返回2行。这可以。 但是,当我在路径周围使用双引号运行相同的查询时:
SELECT JSON_EXTRACT(Info, '$."result.summary"')
FROM TestInfo;
它将2行(单列)返回为NULL。
最终我需要对其中带有连字符(短划线)的键使用双引号。 我在AWS上使用MySQL 5.7。 帮助。
答案 0 :(得分:0)
不要在整个路径上放置双引号,只是在包含特殊字符的特定属性名称周围,例如。
SELECT JSON_EXTRACT(Info, '$.result.summary."realty-society"."price-min"')
FROM TestInfo
Yuor代码使.
成为文字属性名称的一部分,而不是属性之间的分隔符。如果您有:
"result.summary": ...
在对象中。
答案 1 :(得分:0)
如果MYSQL版本> = 5.7
,这应该可以使用SELECT Info->>"$.result.summary"
FROM TestInfo ;