【问题标题】:how to add +1 to code ' 001' and to the code ' 009 ' in PostgreSQL?如何在 PostgreSQL 中为代码“001”和代码“009”添加 +1?
【发布时间】:2016-07-20 10:32:40
【问题描述】:

我正在尝试将 +1 添加到代码“001”但我得到“2”而不是“002”和 +1 到代码“009”但我得到“10”而不是“010”。

表:

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 中解决了。

【问题讨论】:

  • 为什么首先将数字保存为 varchar?例如,在 MySQL 中,您可以选择在列上使用 ZEROFILL。
  • 因为是代码但无论如何我可以进行转换。
  • 对不起,你刚才说的没有任何意义

标签: postgresql dml


【解决方案1】:

LPAD 需要一个字符串,所以试试:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多