1

400 万件を超えるレコードを含むデータベースに、エラーのある文字可変列があることがわかりました。数字が含まれています。それぞれの数字は 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から始まる同じ番号である必要があります

4

1 に答える 1

1

答えは:はい、そうです。ここSQLFiddleでサンプルデータベースを試してみることができます。そのBIGINTタイプを使用します。VARCHAR形式を使用する@gmmによるこれも参照してください。どちらも、元の構文を使用して説明したのと同じように機能します。

于 2013-02-18T22:13:53.023 に答える