相关疑难解决方法(0)

拆分逗号分隔值并将它们映射到 SQLite 中的原始 ID

我有一个名为的表articles,其中包含以下格式的数据:

id|categories
--+----------
1|123,13,43
2|1,3,15
3|9,17,44,18,3
Run Code Online (Sandbox Code Playgroud)

出于测试目的,您可以使用以下 SQL 命令创建此表:

CREATE TABLE articles(id INTEGER PRIMARY KEY, categories TEXT);
INSERT INTO articles VALUES(1, '123,13,43'), (2, '1,3,15'), (3, '9,17,44,18,3');
Run Code Online (Sandbox Code Playgroud)

现在我想拆分categories列的值,以便得到如下所示的表:

id|category
--+--------
1|123
1|13
1|43
2|1
2|3
2|15
3|9
3|17
3|44
3|18
3|3
Run Code Online (Sandbox Code Playgroud)

如您所见,我想将原始表转换为第一范式

从这个答案中,我已经知道如何以这种方式分割一行。以下代码示例仅获取第二行(即 id=2 的行)并以所需的方式拆分它们:

WITH split(article_id, word, str, offsep) AS
(
    VALUES
    (
        2,
        '',
        (SELECT categories FROM articles WHERE id=2),
        1
    )
    UNION ALL
    SELECT
        article_id,
        substr(str, 0, CASE WHEN …
Run Code Online (Sandbox Code Playgroud)

sql sqlite

5
推荐指数
1
解决办法
4502
查看次数

标签 统计

sql ×1

sqlite ×1