我发现我有一个字符变量列,在数据库中有超过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开始的相同数字
答案 0 :(得分:1)
答案是:是的,那是对的。您可以使用示例数据库here on SQL Fiddle。那个使用BIGINT
类型。另请参阅使用VARCHAR表单的this one by @gmm。两者的工作方式就像您使用原始语法描述它们一样。