add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
Create table tmp1
(
ID bigint,
Code varchar(10)
)
insert into tmp1 values(1,'')
insert into tmp1 values(1,'DCBA')
insert into tmp1 values(1,'BACD')
insert into tmp1 values(1,'ABCD')
select * from tmp1

ID Code
1
1 DCBA
1 BACD
1 ABCD
with cte as (
select id, code, stuff(code, 1, 1, '') as rest, left(code, 1) as letter, 1 as lev
from tmp1
union all
select id, code, stuff(rest, 1, 1, '') as rest, left(rest, 1) as letter, lev + 1
from cte
where rest <> ''
)
select id, code, letter, lev
from cte;
id code letter lev
1 1
1 DCBA D 1
1 BACD B 1
1 ABCD A 1
1 ABCD B 2
1 ABCD C 3
1 ABCD D 4
1 BACD A 2
1 BACD C 3
1 BACD D 4
1 DCBA C 2
1 DCBA B 3
1 DCBA A 4
with cte as (
select id, code, left(code, 1) as letter, 1 as lev
from tmp1
union all
select id, code, substring(code, lev, 1) as letter, lev + 1
from cte
where lev < len(code)
)
select id, code, letter, lev
from cte;
id code letter lev
1 1
1 DCBA D 1
1 BACD B 1
1 ABCD A 1
1 ABCD A 2
1 ABCD B 3
1 ABCD C 4
1 BACD B 2
1 BACD A 3
1 BACD C 4
1 DCBA D 2
1 DCBA C 3
1 DCBA B 4