2016-07-11 3 views
0

私は、新しい行ごとに1ずつインクリメントする一意のコードを生成することが期待されるコードを生成するためのPostgresでシーケンスを作成する必要があることに気付きました。 6桁のパターンに従う必要があります。例えばPostgresで非数値シーケンスを作成する

、最初の2つの文字は文字であり、残りの整数で

AC0001 
AC0040 
AC0201 
AC3421 

私はテーブルを作成し、

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

のようなこれはAC1、AC2などとしてコードを生成します。しかし、私は、コードを持っているしたい、そして、第1

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

をシーケンスを作成しましたAC0001、AC0002。 'AC'の直後にゼロを「パッド」しようとしています。 この問題の解決策またはアイデアがあれば、私は感謝します。

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機能を試してみてください。

関連する問題