将 SQLite 列转换为行

Adr*_*nco 5 sqlite android unpivot android-cursor

我正在尝试将返回具有多列的单行的查询转换为具有一列或多列的多行。例如,我的查询如下所示:

SELECT _id, value1, value2, value3, value4 FROM table WHERE _id IS 1;
Run Code Online (Sandbox Code Playgroud)

结果:

_id   value1   value2   value3   value4
----------------------------------------
1     10       11       12       13
Run Code Online (Sandbox Code Playgroud)

我希望我的结果如下所示:

name    value
--------------
value1  10
value2  11
value3  12
value4  13
Run Code Online (Sandbox Code Playgroud)

但我也可以处理这样的事情:

value
-----
10
11
12
13
Run Code Online (Sandbox Code Playgroud)

目前我正在使用 Android 中的 MatrixCursor 手动转换它,但理想的情况是光标已经处于可用状态。有没有办法修改我的查询以检索所需架构中的结果,或者使用临时表之类的东西来实现所需的最终状态?

另外,是否有一个通用术语来描述数据库中的此功能?

CL.*_*CL. 4

没有内置机制可以自动执行此操作。

如果您知道这些列,则可以构造一个单独处理每个列的查询:

SELECT _id, 'value1' AS name, value1 AS value FROM tab WHERE _id = 1
UNION ALL
SELECT _id, 'value2' AS name, value2 AS value FROM tab WHERE _id = 1
UNION ALL
SELECT _id, 'value3' AS name, value3 AS value FROM tab WHERE _id = 1
UNION ALL
SELECT _id, 'value4' AS name, value4 AS value FROM tab WHERE _id = 1;
Run Code Online (Sandbox Code Playgroud)

这不一定比 MatrixCursor 更好。