sql - 如何在 SQLite 中使用 JSON 合并多个列?
问题描述
我有一个 SQLite 数据库,并且有多个名称为"column1"、"column2"、"column3"等的列,我想将它们合并到一个名为"column"的列中,其内容是另一个JSON 格式的列数据。
生成的“列”将有一个像这样的单元格:
{
"column1": 1234,
"column2": 4567,
...
}
为了实现这一点,我认为我应该为 SQLite 使用 JSON 扩展,但我不知道如何在DataGrip IDE或SQLiteDatabaseBrowser中加载它,并在 SQL 控制台中使用它。
我该怎么做?
解决方案
该文档描述了如何加载扩展,您应该为json1
模块执行此操作。
加载扩展后,您可以使用标量函数json_object()
生成有效的 json 对象,如下所示:
select
t.*,
json_object('column1', column1, 'column2', column2, 'column3', column3) as new_column
from mytable t
如果您想在表中实际创建一个新列:
alter table mytable add new_column text; -- json objects are stored as TEXT
update mytable set new_column = json_object(
'column1', column1, 'column2', column2, 'column3', column3
);
推荐阅读
- excel - 如何在一行中查找重复值,然后根据重复项在另一列中查找最大值?
- kubernetes - kubernetes 正在调度 pod 到 master
- excel - 如何使自动填充更高效,或替代自动填充
- python - 学习算法时如何使用python?
- r - 是否有一个 R 函数可以根据一个列变量查找生成列值?
- yaml - 具有多个文件的 YML:未处理的拒绝 YAMLException:重复的映射键
- bash - `read` builtin 不保留仅是空格的输入
- elixir - is with 和 try/rescue 在长生不老药中可以相同
- excel - Excel VBA中的引用范围
- python - 正则表达式:匹配除转义字符之外的所有内容