2016-03-31 3 views
-2

Я пытаюсь добавить +1 к коду '001', но я получаю '2', а не '002 и +1 для кода' 009 ', но я получаю' 10 ', а не' 010 '.Как добавить +1 в код '001' и код '009' в PostgreSQL?

Таблица:

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


CONSTRAINT pk_code PRIMARY KEY (code) 

);

Вставка:

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

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

Я пытаюсь следующий запрос:

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

Postgresql возвращает меня:

ПОДСКАЗКА: Ни одна функция не совпадает с именем и типы аргументов. Возможно, вам потребуется добавить явное преобразование типов.

@juergen d решил это в mysql.

+1

почему вы сохранение номеров в VARCHAR в первую очередь? В MySQL, например, у вас есть возможность использовать ZEROFILL в столбце. – Prix

+0

Потому что это код, но в любом случае я могу сделать преобразование. – Python241820

+0

Извините, но то, что вы только что сказали, не имеет никакого смысла. – Prix

ответ

2

LPAD ожидает строку, так что попробуйте:

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

Спасибо, что отлично работает – Python241820