Mysql JSON_EXTRACT路径中的双引号不起作用

时间:2018-02-13 06:20:18

标签: mysql json

我有下表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。 帮助。

2 个答案:

答案 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 ;