我理解QLite没有循环。这是我想要完成的。我有一行有值(水平): '1:2:3:4:5:6:7:8:9:10'
我希望将其垂直显示为:
1
2
3
4
5
6
7
8
9
10
在Oracle中,我可以使用循环和函数REGEXP_SUBSTR来完成此操作。我怎样才能用SQLite完成这个?
答案 0 :(得分:0)
这可以通过递归common table expression:
来实现CREATE TABLE t(x);
INSERT INTO t VALUES('1:2:3:4:5:6:7:8:9:10');
WITH RECURSIVE split(val, rest) AS (
SELECT NULL,
x || ':'
FROM t
UNION ALL
SELECT substr(rest, 1, instr(rest, ':') - 1),
substr(rest, instr(rest, ':') + 1)
FROM split
WHERE rest != ''
)
SELECT val
FROM split
WHERE val IS NOT NULL;
1
2
3
4
5
6
7
8
9
10