在SQLite列中拆分数据

在SQLite列中拆分数据,sqlite,Sqlite,我有一个类似以下内容的SQLite数据库: ---------- ------------ ------------ | Car | | Computer | | Category | ---------- ------------ ------------ | id | | id | | id | | make | | make | | record | | model | | price

我有一个类似以下内容的SQLite数据库:

----------   ------------   ------------
| Car    |   | Computer |   | Category |
----------   ------------   ------------
| id     |   | id       |   | id       |
| make   |   | make     |   | record   |
| model  |   | price    |   ------------
| year   |   | cpu      |
----------   | weight   |
             ------------
my
Category
表中的
record
列包含一个逗号分隔的列表,其中列出了属于该类别的表名和项目id,因此条目如下所示:
车1、车2

我正在尝试拆分逗号上记录中的项目以获得每个值:

Car_1
Car_2
然后我需要更进一步,在
\uu
上拆分,并返回
汽车
记录

因此,如果我知道
类别
id,我将试图最终得出以下结论:

----------------   ------------------
| Car          |   | Car            |
---------------|   -----------------|
| id: 1        |   | id: 2          |
| make: Honda  |   | make: Toyota   |
| model: Civic |   | model: Corolla |
| year: 2016   |   | year: 2013     |
----------------   ------------------
我已经在逗号上进行了一些成功的拆分,并获得了2个
记录
的返回,但是我在
\uu
上进行了拆分,并在
记录
中加入了表

这是我目前的疑问:

WITH RECURSIVE record(recordhash, data) AS (
  SELECT '', record || ',' FROM Category WHERE id = 1
   UNION ALL
  SELECT
         substr(data, 0, instr(data, ',')),
         substr(data, instr(data, ',') + 1)
    FROM record
   WHERE data != '')
SELECT recordhash
  FROM record 
 WHERE recordhash != ''
这又回来了

--------------
| recordhash |
--------------
| Car_1      |
| Car_2      |
--------------

任何帮助都将不胜感激

如果递归CTE按预期工作,则可以将
记录哈希
的每个值拆分为
作为分隔符,并使用
之后的部分作为
Car
行的
id
,以返回:

select * from Car
where id in (
  select substr(recordhash, 5)
  from record
  where recordhash like 'Car%'
)

你愿意改变你的桌子设计吗?我不想这么说,但这是完全错误的。这正是我所需要的,但是否可以通过编程方式设置表名呢?因此,它不是在查询中硬编码“Car”,而是来自recordhash?您有两个表:Car和Truck。如果您想要两个表的结果,可以通过一个并集和检查recordhash的第一部分来完成,但是表的名称仍然是硬编码的。这是您想要的吗?整个数据库大约有15个表。我刚刚更新了我的问题以替换卡车表。桌子都不一样。我正在尝试进行一个查询,只需将类别id传递到该查询中,即可获取记录列表。如果表名必须硬编码,那么我们就无能为力。查询不能根据参数返回不同的列数。它总是返回相同的结果。你需要的东西可以用编程语言来完成。我95%的查询都会返回相同的类型。我想我得为剩下的做些不同的事情。非常感谢你的帮助!