我需要一个SQL,它在给定的起点和终点之间生成字母序列.
就像,Start='C' End='G'输出应该是
C
D
E
F
G
Run Code Online (Sandbox Code Playgroud)
select chr(ascii('C') + level - 1)
from dual
connect by ascii('C') + level - 1 <= ascii('G');
Run Code Online (Sandbox Code Playgroud)
使用connect by这样(no start with和一个仅取决于级别的结束条件)是未记录的(并且不受支持),因此它可能会中断任何时间(尽管我不知道任何不适用的版本).
从11.2开始,您还可以使用递归公用表表达式:
with letters (letter, inc) as (
select 'C', 1 as inc
from dual
union all
select chr(ascii('C') + p.inc), p.inc + 1
from letters p
where p.inc < 5
)
select letter
from letters;
Run Code Online (Sandbox Code Playgroud)