首页 > 解决方案 > 如何在 SQLite 中使用 JSON 合并多个列?

问题描述

我有一个 SQLite 数据库,并且有多个名称为"column1""column2""column3"等的列,我想将它们合并到一个名为"column"的列中,其内容是另一个JSON 格式的列数据。

生成的“列”将有一个像这样的单元格:

{
    "column1": 1234,
    "column2": 4567,
    ...
}

为了实现这一点,我认为我应该为 SQLite 使用 JSON 扩展,但我不知道如何在DataGrip IDESQLiteDatabaseBrowser中加载它,并在 SQL 控制台中使用它。

我该怎么做?

标签: sqljsonsqlite

解决方案


文档描述了如何加载扩展,您应该为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
);

推荐阅读