Учитывая таблицу table1
в PostgreSQL:
number1 | number2 | min_length | max_length 40 | 1801 | 8 | 8 40 | 182 | 8 | 8 42 | 32 | 6 | 8 42 | 4 | 6 | 6 43 | 691 | 9 | 9
Я хочу создать новую таблицу table2
, например:
start | stop 4018010000 | 4018019999 4018200000 | 4018299999 42320000 | 42329999 423200000 | 423299999 4232000000 | 4232999999 42400000 | 42499999 43691000000 | 43691999999
Итак, новая таблица будет состоять из:
column_1 = a concatenation of old_column_1 + old_column_2 + a number of "0" equal to (old_column_3 - length of the old_column_2)
column_2 = a concatenation of old_column_1 + old_column_2 + a number of "9" equal to (old_column_3 - length of the old_column_2)
А когда min_length
не равно max_length
, мне нужно учесть все возможные длины. Итак, для строки "42";"32";6;8 все длины равны: 6,7 и 8.
Я попытался создать новую таблицу table2 AS table1, затем создать новые столбцы start и stop, а затем объединить столбцы 1 и 2 следующим образом:
create table table2 as select * from table1;
alter table table2 add column start text,
add column stop text;
update table2 set start = number1 || number2
Для конкатенации первых 2 столбцов. Но я не могу понять, как сделать всю конкатенацию, чтобы добавить «0» и «9».