我发现在一个超过 4 百万条记录的数据库中,我有一个包含错误的字符可变列。它包含数字。每个数字都必须有 12 位数字,但出于某种原因,很多这些数字最终都有 10 位数字。 好消息是,我唯一需要做的就是在每个只有 10 位数字并以数字“22”开头的单元格前添加“55”,而保留 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%');
我做的对吗?如果不是,正确的做法是什么
如果数字不是字符串而是存储为 big int,同样的规则适用,它仍然是 10 位长,这意味着数字小于 3.000.000.000 大于 2.000.000.000 怎么办?并且它们都需要是相同的数字,以 55 开头
最佳答案
答案是:是的,没错。您可以尝试使用示例数据库 here on SQL Fiddle .那一个使用 BIGINT
类型。另见 this one by @gmm ,它使用 VARCHAR 形式。两者的工作方式就像您使用原始语法描述它们一样。
关于sql - 更新 postgresql 中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14945730/