2016-03-31 15 views
-2

Ich versuche, +1 zu Code '001' hinzuzufügen, aber ich bekomme '2' und nicht '002 und +1 zu Code' 009 ', aber ich bekomme' 10 'und nicht' 010 '.Wie fügt man +1 zum Code '001' und zum Code '009' in PostgreSQL hinzu?

Tabelle:

create table example 
(
    code  varchar(7), 
    row1  varchar(10), 
    row2  varchar(7), 


CONSTRAINT pk_code PRIMARY KEY (code) 

);

Insert:

insert into example(code, row1, row2) 
values('001','x1', 'y1'); 

insert into example(code, row1, row2) 
values('009','x2', 'y2'); 

Ich versuche, die nächste Abfrage:

select LPAD(cast(code as int)+1, 3, '0') from example; 

Postgresql gibt mir:

TIPP: keine Funktion entspricht den Namen und Typen von Argumenten. Möglicherweise müssen Sie eine explizite Typkonvertierung hinzufügen.

@juergen d löste es in mysql.

+1

warum sind Sie Zahlen als varchar an erster Stelle zu speichern? In MySQL haben Sie zum Beispiel die Möglichkeit, ZEROFILL für die Spalte zu verwenden. – Prix

+0

Da ist ein Code aber trotzdem kann ich eine Konvertierung machen. – Python241820

+0

Sorry, aber was du gerade gesagt hast macht keinen Sinn – Prix

Antwort

2

LPAD erwartet einen String, so versuchen:

select LPAD(cast(cast(code as int) + 1 as varchar), 3, '0') from example; 
+0

Vielen Dank funktioniert perfekt – Python241820