首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql表中的嵌套JSON

问mysql表中的嵌套JSON
EN

Stack Overflow用户
提问于 2021-05-17 07:14:14
回答 1查看 64关注 0票数 0

我的mysql数据库中有一个表mysql,其中有一个名为FORM的列,该列包含json字符串,所有这些类型如下:

代码语言:javascript
复制
{"type":"polygon","corners":[{"x":43.790000915527344,"y":2.6940000057220463,"floor":0},{"x":44.884937766905495,"y":8.128635658848992,"floor":0},{"x":24.52993631732053,"y":12.229635729420892,"floor":0},{"x":23.434999465942386,"y":6.795000076293945,"floor":0}],"floor":0}}

我正在寻找的是取消嵌套,创建一个包含列:type, x,y,floor的表。现在,如果是这样的话,字符串的外观如下:

代码语言:javascript
复制
{"corners":[{"x":43.790000915527344,"y":2.6940000057220463,"floor":0},{"x":44.884937766905495,"y":8.128635658848992,"floor":0},{"x":24.52993631732053,"y":12.229635729420892,"floor":0},{"x":23.434999465942386,"y":6.795000076293945,"floor":0}],"floor":0}

我会做以下事情:

代码语言:javascript
复制
SELECT ID, Tab.*
    FROM db.Geometry 
        CROSS JOIN JSON_TABLE(
            db.Geometry.FORM-> '$.corners',
            '$[*]' COLUMNS (
                x VARCHAR(255) PATH '$.x',
                y VARCHAR(255) PATH '$.y',
                floor VARCHAR(255) PATH '$.floor'
            )
    ) Tab;

但是,在实际情况下,这显然是行不通的,因为我没有处理json字符串的"type":"polygon“部分。它还空着一张桌子。

我需要在我的代码中添加什么来处理这个问题?感谢你的洞察力。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-17 07:35:44

也许你需要加入

代码语言:javascript
复制
SELECT Geometry.ID, jsontable1.type, jsontable1.object_floor, jsontable2.*
FROM Geometry 
CROSS JOIN JSON_TABLE( Geometry.FORM,
                       '$' COLUMNS ( type VARCHAR(255) PATH '$.type',
                                     corners JSON PATH '$.corners',
                                     object_floor INT PATH '$.floor' ) ) jsontable1
CROSS JOIN JSON_TABLE( jsontable1.corners,
                       '$[*]' COLUMNS ( ROWID FOR ORDINALITY,
                                        x VARCHAR(255) PATH '$.x',
                                        y VARCHAR(255) PATH '$.y',
                                        corner_floor VARCHAR(255) PATH '$.floor' ) ) jsontable2

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=5d95a6a3392409ebf851fc9a87840926

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67565396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档