RosettaCodeData/Task/Range-expansion/DuckDB/range-expansion.duckdb
2025-08-11 18:05:26 -07:00

10 lines
380 B
Text

create or replace function range_expansion(s) as (
regexp_extract_all(s, '[^,]+')
.list_transform( x ->
regexp_extract(x, '(-?[0-9]+)-(-?[0-9]+)|(.*)', ['a', 'b', 'c']) )
.list_transform( x -> if (x.a = '', [x.c::BIGINT],
range( x.a::INT, x.b::INT + 1) ) )
.flatten()
);
select range_expansion( '-6,-3--1,3-5,7-11,14,15,17-20') as range;