1. ホーム
  2. sql

[解決済み] MySQL - 郵便番号の前に "0 "を付けるには?

2023-01-05 19:44:19

質問

MySQL InnoDB データベースに、クリーンアップしたいダーティな郵便番号のデータがあります。

クリーンな郵便番号データは、郵便番号のすべての5桁がある場合です (例: "90210")。

しかし、何らかの理由で、私のデータベースで、"0" で始まる郵便番号については、0 が削除されていることに気づきました。

というわけで、" ニューヨーク州ホルツビル "郵便番号で" 00544 という名前でデータベースに保存されています。 544 という名前で保存されています。

"です。 マサチューセッツ州デダム "郵便番号で "。 02026 という名前でデータベースに格納されています。 2026 という名前で保存されています。

長さが 5 桁でない郵便番号に "0" を前置するために実行できる SQL は何ですか。つまり、郵便番号の長さが 3 桁の場合、"00" を前面に配置します。郵便番号の長さが4桁の場合、フロントパッドは "0"だけです。

アップデイト :

郵便番号をdatatype VARCHAR(5)に変更したところ

どのように解決するのですか?

郵便番号を数値型ではなくCHAR(5)として保存するか、DBから読み込む際にアプリケーションで0を埋め込むようにします。PHP でこれを行うには sprintf() :

echo sprintf("%05d", 205); // prints 00205
echo sprintf("%05d", 1492); // prints 01492

あるいは、MySQL に次のように代入させることもできます。 LPAD() :

SELECT LPAD(zip, 5, '0') as zipcode FROM table;

すべての行を更新し、パディングする方法を紹介します。

ALTER TABLE `table` CHANGE `zip` `zip` CHAR(5); #changes type
UPDATE table SET `zip`=LPAD(`zip`, 5, '0'); #pads everything