Access 2003では、先行ゼロを維持したまま、次のような数値を表示する必要があります。
- 080000
- 090000
- 070000
これにはどのデータ型を使用する必要がありますか?
Access 2003では、先行ゼロを維持したまま、次のような数値を表示する必要があります。
これにはどのデータ型を使用する必要がありますか?
文字列(またはテキスト、varchar、または特定のRDBMSが使用する任意の文字列バリアント)を使用し、必要な文字( "0")を埋め込みます。
重要な質問:
先行ゼロは意味のあるデータですか、それとも単にフォーマットですか?
たとえば、07086は私の郵便番号であり、先行ゼロは意味があるため、米国の郵便番号はテキストとして保存する必要があります。
値「1」、「01」、「001」、および「0001」は、一意の正当な値と見なされますか、それとも重複していると見なされますか?
先行ゼロがテーブルで意味がなく、フォーマットのためだけにある場合は、データを数値として保存し、表示目的で必要に応じて先行ゼロを使用してフォーマットします。
次のクエリ例のように、 Format()関数を使用してフォーマットを行うことができます。
SELECT Format(number_field, "000000") AS number_with_leading_zeroes
FROM YourTable;
また、私が知っているすべてのデータベースエンジンでの数値の格納とインデックス作成は、テキストの格納とインデックス作成よりも効率的であるため、大規模なデータセット(数十万レコード以上)では、数値データにテキストデータ型を使用する場合のパフォーマンスの低下が発生する可能性があります。かなり大きい。
最後に、データに対して計算を行う必要がある場合は、それらを数値として保存する必要があります。
重要なのは、データの使用方法から始めて、それに応じてデータ型を選択することです。プレゼンテーション時(フォームとレポート)でのみフォーマットすることを心配する必要があります。
外観によって、テーブルのフィールドのデータ型の選択が促進されることはありません。
実際のデータが例のように見え、桁数が固定されている場合は、データを数値フィールドに格納し、Accessテーブルデザインの列のフォーマット/入力マスク属性を使用して、ゼロを埋めて表示します。
可変数の先行ゼロがない限り、それらを格納する理由はなく、一般的には悪い考えです。テキストタイプを不必要に使用すると、パフォーマンスが低下し、異常なデータの導入が容易になり、データベースへのクエリが困難になる可能性があります。
正確に6つの数字を保証するためのCHECK制約付きのUnicode圧縮による固定幅文字。例:ANSI-92クエリモード構文:
CREATE TABLE IDs
(
ID CHAR(6) WITH COMPRESSION NOT NULL
CONSTRAINT uq__IDs UNIQUE,
CONSTRAINT ID__must_be_ten_numeric_chars
CHECK (ID ALIKE '[0-9][0-9][0-9][0-9][0-9][0-9]')
);
それらをテーブル内の数値として保持する必要がありますか(つまり、SUMなどのクエリ内で集計を行う必要があると思いますか)?
そうでない場合は、テキスト/文字列データ型で十分です。
そうする場合は、おそらく2つのフィールドが必要です。
次に、上記のパターン文字列を使用して、数値の表示をフォーマットできます。
.NET言語を使用している場合は、System.String.Format()またはSystem.Object.ToString()を使用できます。
Accessフォーム/レポートを使用している場合、AccessはUIコントロールで非常によく似た文字列フォーマットパターンを使用します。