SQLite没有循环。我怎样才能完成循环?

时间:2016-01-23 22:24:05

标签: sql sqlite loops row

我理解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完成这个?

1 个答案:

答案 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