如何为已有价值的列增加价值

时间:2019-03-08 12:14:53

标签: sql postgresql

如何为已有值的列增加值。这样该控制台中的值最多可以有10个长度。

开始时,列中的值具有不同的长度

示例。我有2列DB。
ID列中的每个值最多应包含10个字符,如果要省略,则应在其前面加上零

USER    ID
1111    0000012345
2222    001234
3333    567890
4444    67890
5555    7778889

3 个答案:

答案 0 :(得分:0)

我认为您想要lpad()

update t
    set id = lpad(id, 10, '0');

或者您可能希望在select中使用它:

select t.*, lpad(id, 10, '0') as id_10
from t;

答案 1 :(得分:0)

您的问题不清楚。

据我了解,如果要选择ID列,该列的长度应为10,然后在查询下方。

SELECT RIGHT(REPLICAE('0',10) + ID ,10) FROM <YourTableName>

答案 2 :(得分:0)

您可以按照以下步骤进行操作。

create temp table my_table(
USER1 int,
ID varchar(10));

insert into my_table
values(1111,'0000012345'),
      (2222, '001234'),
      (3333,'567890'),
      (4444,'67890'),
      (5555,'7778889');

select USER1, 
CASE 
    WHEN length(ID)<10 THEN CONCAT(repeat('0',10-length(ID)),ID)
    ELSE ID
END as ID
from my_table

结果将是这样。

USER1   ID
1111    0000012345
2222    0000999932
3333    0000333413
2222    0000994554

在我的表中,我已经施加了约束,即ID列的长度应为10,但是如果您的值大于10,那么我不确定要如何处理该问题,因为对此有不同的选择。您可以将整个列设置为“无效”或截断它。