web-dev-qa-db-ja.com

米国の郵便番号に最適な列タイプは何ですか?

郵便番号(米国内)をMySQLデータベースに保存したい。 節約スペースが優先されます。これは、VARCHARを使用する方が良いオプションです。最大長が6桁に制限されているか、INTを使用するか、MEDIUMIntを使用します。郵便番号は計算には使用されません。郵便番号は、挿入(1回)、更新(必要な場合)、および取得-1回(ただし、複数回の場合もあります)に使用されます。

ここで使用するのに適したオプションはどれですかVARCHARまたはINTまたはMEDIUM IN MYSQL?他に何か提案してください。

8
tapan banker

郵便番号を数値として保存することにはいくつかの問題があります。

  1. 郵便番号には拡張子があります。つまり、_12345-6789_にすることができます。数値データ型にダッシュを格納することはできません。
  2. ゼロで始まる多くの郵便番号があります。intとして保存すると、先頭のゼロが失われます。
  3. 郵便番号などを加算/減算したり、数値関数を使用したりすることはありません。

郵便番号をvarchar(5)またはvarchar(10)として保存します。

ちなみに、なぜvarchar(6)を選択するのかわかりませんが、標準の郵便番号が5または10で拡張子が付いている場合に、通常とは異なる長さを選択する理由はありますか?

19
Taryn

私は通常、5桁の郵便番号にMEDIUMINT(5) ZEROFILLを使用します。これにより、先頭の_0_が保持され、VARCHAR(5)が6を使用する場合は3バイトのみが使用されます。これは、ダッシュと4つの追加番号を持つ拡張郵便番号が必要ないことを前提としています。テキストタイプを使用することにした場合は、データが常に5文字の長さである方がよいため、CHAR(5)の代わりにVARCHAR(5)を使用します。

6
G-Nugget

郵便番号は常に5文字であるため、VARCHARではなくCHARデータ型が必要になります。

したがって、あなたの選択肢は

CHAR(5)

MEDIUMINT (5) UNSIGNED ZEROFILL

最初のものは、郵便番号ごとに5バイトかかります。

2つ目は、郵便番号ごとに3バイトしかかかりません。 ZEROFILLオプションは、先行ゼロのある郵便番号に必要です。

したがって、スペースを優先する場合は、MEDIUMINTを使用してください。

4
fisharebest

国によっては郵便番号が英数字として使用され、他の場所では整数として使用されるため、VARCHARデータ型を使用することをお勧めします。したがって、整数をグローバルに使用することはできません。また、郵便番号は001101のようにゼロで始まる場合があるため、この場合、データ型整数を取得すると、先行ゼロが失われるため、実際の郵便番号を渡すことはできません。

1
Lawakush Kurmi