sequence increment with 2018AA00001 in postgresql

时间:2018-07-25 04:35:32

标签: sql postgresql

i have created generate_letters & generate_num table using below query

select chr(i) as letter from generate_series(65,90) i;

select lpad(i::text,6,'0') as num from generate_series(1,100000) i;

after doing cross join with two tables using below query

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 10;

i am getting the out put result (

2018AA000001
 2018AA000002
 2018AA000003
 2018AA000004
 2018AA000005

)

but how i need to use sequence for column(bill_id) increment using above query. please suggest me.

1 个答案:

答案 0 :(得分:1)

创建一个序列,然后将fs子句用于所需的表达式。

SQL Fiddle

PostgreSQL 9.6模式设置

DEFAULT

查询1

CREATE SEQUENCE yourseq INCREMENT 1 START 1 MINVALUE 1; 

CREATE TABLE yourtable 
  ( 
     bill_id   TEXT DEFAULT '2018AA'||lpad(NEXTVAL('yourseq'::regclass)::text, 6 
     , '0' ), 
     bill_desc TEXT 
  ); 


INSERT INTO yourtable(bill_desc) VALUES ('Telephone Bill');
INSERT INTO yourtable(bill_desc) VALUES ('Water Bill');

Results

select * FROM yourtable