1

我发现我在一个包含超过 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%');

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

如果数字不是存储为大整数而不是字符串,同样的规则适用,它仍然是 10 位长,这意味着数字小于 3.000.000.000 并且大于 2.000.000.000?并且它们都必须是相同的数字,以 55 开头

4

1 回答 1

1

答案是:是的,没错。您可以在 SQL Fiddle 上使用示例数据库。那个使用BIGINT类型。另请参阅@gmm 的这篇文章,它使用 VARCHAR 形式。两者都像您使用原始语法描述的那样工作。

于 2013-02-18T22:13:53.023 回答