Postgresql 为各种数字和字母的混合生成系列
我使用以下语法:Postgresql 为各种数字和字母的混合生成系列,postgresql,Postgresql,我使用以下语法: generate_series(1, COALESCE((string_to_array(table.id_number, '-')) [2] :: INT, 1)) AS n (numbers) 在ID为32.22.1-4的元素中生成ID,以获得ID为32.22.1、32.22.2、32.22.3和32.22.4的4行。如何将其更改为同时接受信件 因此,对于32.22.a-c,将有: 32.22.a, 32.22.b, 32.22.c 对于32.22.d1-d4,将有 3
generate_series(1, COALESCE((string_to_array(table.id_number, '-')) [2] :: INT, 1)) AS n (numbers)
在ID为32.22.1-4的元素中生成ID,以获得ID为32.22.1、32.22.2、32.22.3和32.22.4的4行。如何将其更改为同时接受信件
因此,对于32.22.a-c,将有:
32.22.a, 32.22.b, 32.22.c
对于32.22.d1-d4,将有
32.22.d1, 32.22.d2, 32.22.d3, 32.22.d4
编辑:
整个代码如下所示:
INSERT INTO ...
(
SELECT
...
FROM table
CROSS JOIN LATERAL
generate_series(1, COALESCE((string_to_array(table.id_number, '-')) [2] :: INT, 1)) AS n (numbers)
WHERE table.id_number LIKE ...
);
结果:
output
---------
32.33.a1
32.33.a2
32.33.a3
32.33.a4
32.33.a5
32.34.a
32.34.b
32.34.c
32.35.b
32.35.c
32.35.d
32.35.e
(12 rows)
哦,有点长。如果代码看起来像:
output
---------
32.33.a1
32.33.a2
32.33.a3
32.33.a4
32.33.a5
32.34.a
32.34.b
32.34.c
32.35.b
32.35.c
32.35.d
32.35.e
(12 rows)