在postgresql中更新列

时间:2013-02-18 21:38:11

标签: sql postgresql

我发现我有一个字符变量列,在数据库中有超过4个记录的错误。它包含数字。每个号码必须有12位数字,但由于某些原因,很多这些号码最终都有10位数字。 好消息是,我唯一需要做的就是在每个只有10位数字的单元格前加上“55”,以数字“22”开头,留下12位数字的单元格。

我的目标是:

UPDATE 
  table 
SET 
  column = CONCAT( '55', column ) 
WHERE 
  LENGTH( column ) = 10 AND column LIKE( '22%');

我正在考虑使用它:

UPDATE 
  telephones 
SET 
  telephone_number = CONCAT( '55', telephone_number ) 
WHERE 
  LENGTH( telephone_number ) = 10 AND telephone_number LIKE( '22%');

我做得对吗?如果没有,那么正确的方法是什么

如果不是字符串而是将数字存储为大整数,同样的规则适用,它仍然是10位数,这意味着该数字低于3.000.000.000且大于2.000.000.000?并且它们都需要是从55开始的相同数字

1 个答案:

答案 0 :(得分:1)

答案是:是的,那是对的。您可以使用示例数据库here on SQL Fiddle。那个使用BIGINT类型。另请参阅使用VARCHAR表单的this one by @gmm。两者的工作方式就像您使用原始语法描述它们一样。