5

Access 2003では、先行ゼロを維持したまま、次のような数値を表示する必要があります。

  • 080000
  • 090000
  • 070000

これにはどのデータ型を使用する必要がありますか?

4

5 に答える 5

13

文字列(またはテキスト、varchar、または特定のRDBMSが使用する任意の文字列バリアント)を使用し、必要な文字( "0")を埋め込みます。

于 2009-10-19T13:33:27.760 に答える
4

重要な質問:

先行ゼロは意味のあるデータですか、それとも単にフォーマットですか?

たとえば、07086は私の郵便番号であり、先行ゼロは意味があるため、米国の郵便番号はテキストとして保存する必要があります。

値「1」、「01」、「001」、および「0001」は、一意の正当な値と見なされますか、それとも重複していると見なされますか?

先行ゼロがテーブルで意味がなく、フォーマットのためだけにある場合は、データを数値として保存し、表示目的で必要に応じて先行ゼロを使用してフォーマットします。

次のクエリ例のように、 Format()関数を使用してフォーマットを行うことができます。

SELECT Format(number_field, "000000") AS number_with_leading_zeroes
FROM YourTable;

また、私が知っているすべてのデータベースエンジンでの数値の格納とインデックス作成は、テキストの格納とインデックス作成よりも効率的であるため、大規模なデータセット(数十万レコード以上)では、数値データにテキストデータ型を使用する場合のパフォーマンスの低下が発生する可能性があります。かなり大きい。

最後に、データに対して計算を行う必要がある場合は、それらを数値として保存する必要があります。

重要なのは、データの使用方法から始めて、それに応じてデータ型を選択することです。プレゼンテーション時(フォームとレポート)でのみフォーマットすることを心配する必要があります。

外観によって、テーブルのフィールドのデータ型の選択が促進されることはありません。

于 2009-10-20T03:01:31.903 に答える
3

実際のデータが例のように見え、桁数が固定されている場合は、データを数値フィールドに格納し、Accessテーブルデザインの列のフォーマット/入力マスク属性を使用して、ゼロを埋めて表示します。

可変数の先行ゼロがない限り、それらを格納する理由はなく、一般的には悪い考えです。テキストタイプを不必要に使用すると、パフォーマンスが低下し、異常なデータの導入が容易になり、データベースへのクエリが困難になる可能性があります。

于 2009-10-19T14:16:22.980 に答える
1

正確に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]')
);
于 2009-10-19T15:02:55.117 に答える
0

それらをテーブル内の数値として保持する必要がありますか(つまり、SUMなどのクエリ内で集計を行う必要があると思いますか)?

そうでない場合は、テキスト/文字列データ型で十分です。

そうする場合は、おそらく2つのフィールドが必要です。

  1. 番号を保存するには[すなわち80000]そして
  2. 値の表示方法に関するメタデータを保存する
    • おそらく、ある種のマスクまたはフォーマットパターン[例:'000000']。

次に、上記のパターン文字列を使用して、数値の表示をフォーマットできます。

  • .NET言語を使用している場合は、System.String.Format()またはSystem.Object.ToString()を使用できます。

  • Accessフォーム/レポートを使用している場合、AccessはUIコントロールで非常によく似た文字列フォーマットパターンを使用します。

于 2009-10-19T14:02:16.670 に答える