0

拡張子なしで 5 桁の米国の郵便番号を格納するテーブルを設計しています。主な候補はCHAR(5)とのようMEDIUMINT (5) UNSIGNED ZEROFILLです。参照:

データベースに米国の郵便番号を格納するために整数列を使用することは良い考えですか? で説明されている理由により、CHAR(5) を使用する予定です。. 編集-そのため、使用ZEROFILLは回答ではないため、この質問を使用または終了するように依頼しないでください。ZEROFILL使用するという以前の回答を参照してくださいZEROFILL

次に、(5) 文字が常に格納されるようにし、指定された文字数が少ない場合は、クエリでエラーが発生するか、左にゼロが埋め込まれます (右にスペースが埋め込まれません)。私の意図は、郵便番号「3101」がデータベースに存在することを防ぎ、「03101」でなければならないことを確認することです。PHP アプリケーションで郵便番号をゼロで埋める方法を尋ねているわけではないことに注意してください。

4

3 に答える 3

2

LPAD 関数を使用して、値をゼロで左に埋め込むことができます。

LPAD (zip_code, 5, '0')
于 2013-09-26T13:43:50.710 に答える
0

フィールドに zerofill 属性を追加し、lenth を 5 に設定すると、提供したリンクに記載されているように、左側にゼロが埋め込まれます。

CREATE TABLE `test` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `test` int(5) unsigned zerofill DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

入力する前に必ずzipを検証してください。

また、郵便番号に 4 桁の接尾辞が付いている場合もあります。この形式の郵便番号があると予想される場合は、char(10) にすることをお勧めします。または zip_suffix 列。

于 2013-09-26T13:39:39.550 に答える
0

まず、数字のみを保存する場合は、CHAR よりも SMALLINT を使用することをお勧めします。INT とその派生物はそのために作られています:

常に 5 文字を維持するには、ZEROFILL を使用する必要があります。このスレッドをご覧ください: MySQL でのゼロフィルの利点は何ですか?

于 2013-09-26T13:41:39.727 に答える