2016-07-11 13 views
0

나는 각 새로운 행마다 하나씩 증가하는 고유 한 코드를 생성 할 것으로 예상되는 코드 (문자열)를 생성하기 위해 Postgres에서 시퀀스를 생성해야한다는 요구 사항을 발견했습니다. 6 자리 패턴을 따라야합니다. 예컨대Postgres에서 숫자가 아닌 시퀀스 만들기

처음 두 문자가 문자이다

AC0001 
AC0040 
AC0201 
AC3421 

을하고 나머지는 정수이다. 이 AC1, AC2 등으로 코드를 생성

CREATE TABLE account 
(
    code VARCHAR NOT NULL DEFAULT 'AC'||nextval('code_sequence'::regclass)::VARCHAR, 
    desc VARCHAR 
); 

다음
CREATE SEQUENCE code_sequence START WITH 1 
INCREMENT BY 1 
CACHE 1; 

, 테이블을 생성 내가 먼저 시퀀스를 생성 한

는하지만, 내가 좋아하는 코드를 갖고 싶어 AC0001, AC0002. 'AC'바로 뒤에있는 '0'을 '채우려는'시도. 이 문제에 대한 해결책이나 아이디어가 있으면 알려 주시면 감사하겠습니다.

CREATE TABLE account 
(
    code VARCHAR NOT NULL DEFAULT 'AC'||to_char(nextval('code_sequence'), 'FM0000'), 
    "desc" VARCHAR 
); 

답변

0

사용 to_char() 숫자를 포맷합니다.

CREATE TABLE account 
(
    code VARCHAR NOT NULL DEFAULT 'AC' || LPAD(nextval('code_sequence'::regclass), 4, '0')::VARCHAR, 
    desc VARCHAR 
); 
0

LPAD 기능을 시도해보십시오