mysql - MySQL - 如何从列中列出 JSON 数据的所有键名
问题描述
我有一个 SQL 表,其中包含一个 JSON 列。现在,我想这样做。如何从注册的所有行(JSON 列)中获取所有键名。一个例子;
ID JSON
1 {"a": 1, "b": 2}
2 {"apple": 3, "banana": 5}
3 {"wood": 4, "food": 6}
我应该得到一个查询,从这些行中获取所有键名。所以我的结果应该是这样;
JSON
--------
a
b
apple
banana
wood
food
那可能吗?我可以这样做吗?
解决方案
要回答您的问题,是的,这是可能的。
回答你的第二个问题:我怎么知道你是否可以点这个?
以下是如何执行此操作的示例:
首先我创建了示例表:
CREATE TABLE json2(id integer, js JSON);
INSERT INTO json2 VALUES
( 1, '{"a": 1, "b": 2}'),
( 2, '{"apple": 3, "banana": 5}'),
( 3, '{"wood": 4, "food": 6}');
应用一些JSON 函数时:
SELECT
JSON_UNQUOTE(JSON_EXTRACT(JSON_KEYS(js),CONCAT('$[',x.x,']'))) as `JSON`
FROM json2
CROSS JOIN (SELECT 0 as x
UNION ALL
SELECT 1
) x
;
输出是:
+ --------- +
| JSON |
+ --------- +
| a |
| b |
| apple |
| banana |
| food |
| wood |
+ --------- +
推荐阅读
- email - 将当前活动工作表中的指定范围通过电子邮件发送为 PDF
- firebase - Firebase 从多个设备同时更新单个文档
- android - 如何制作当有人在手机上安装时自动隐藏的 Flutter App
- imagemagick - ImageMagick Webp 被识别为 VIDEO
- javascript - 在 Javascript 中提取 JPA 命名参数
- python - 列表理解适用于从另一个列表中删除匹配项?
- javascript - 如何使用相同的触发器播放音频和视频
- sql - 拆分oracle sql中的给定列
- python - Python Tkinter 代码-TypeError:“按钮”对象不可调用
- typescript - 常量列表 = ['aa', 'bb', 'cc']; 类型 obj = { aa: 任何;bb:任何;cc: any} 我们知道列表,以及如何在 typescript 中获取类型 obj