序列增量,如2018AA000001,2018AB000001,2018AC000001

时间:2018-07-19 09:02:43

标签: postgresql

完成第一个序列后,我需要将序列从2018AA000001增加到2018AA100000,然后应该从下一个序列2018AB000001开始到2018AB100000

在postgresql中使用触发器只能工作一个序列,但是我需要先实现2018AA然后实现2018AB,2018AC序列。

请建议我该怎么做。

谢谢, 维塔尔

1 个答案:

答案 0 :(得分:0)

您可能可以利用此功能。也许有些人可以将其编辑成可以使用的序列。 这将输出您在描述中指定的结果。

discard temp;

我们将以此生成信件列表。

create temp table generate_letters as
select chr(i) as letter from generate_series(65,90) i;
 letter 
--------
 A
 B
 C
 D
 E
 F
 G
 H
 I
 J
 K
 L
 M
 N
 O
 P
 Q
 R
 S
 T
 U
 V
 W
 X
 Y
 Z
(26 rows)

并生成最多100000的数字。

create temp table generate_num as
select lpad(i::text,6,'0') as num from generate_series(1,100000) i;
select * from generate_num limit 10;
  num   
--------
 000001
 000002
 000003
 000004
 000005
 000006
 000007
 000008
 000009
 000010
(10 rows)

然后我们只需要交叉加入即可。

select concat_ws('','2018',gl1.letter,gl2.letter,d.num) as seq
from       generate_letters gl1
cross join generate_letters gl2
cross join generate_num d limit 100003;
     seq      
--------------
 2018AA000001
 2018AA000002
 2018AA000003
 2018AA000004
 2018AA000005
 2018AA000006
 2018AA000007
 2018AA000008
 2018AA000009
...skipping...
 2018AA099997
 2018AA099998
 2018AA099999
 2018AA100000
 2018AB000001
 2018AB000002
相关问题