2

TEXTデータ型を使用してID番号をデータベースに格納した場合、悪影響はありますか?私は次のようなことをします:

CREATE TABLE GenData ( EmpName TEXT NOT NULL, ID TEXT PRIMARY KEY);

実際、日付値を格納する場合は、通常、TEXTデータ型を使用します。これが間違った方法である場合、その欠点は何ですか?

私はを使用してPostgreSQLいます。

4

4 に答える 4

5

テキスト列に数値を格納することは非常に悪い考えです。これを行うと、多くの利点が失われます。

  • 無効な番号の保存を防ぐことはできません(例:'foo')
  • 並べ替えは希望どおりに機能しません(「10」は「2」よりも「小さい」)
  • それはあなたのデータモデルを見ているすべての人を混乱させます。

普段TEXTを使っている日付の値を保存したい

それは別の 非常に悪い考えです。主に同じ理由で、テキスト列に数値を格納するべきではありません。完全に間違った日付(「foo」)に加えて、「無効な」日付(たとえば、2月31日)も防ぐことはできません。そして、並べ替え、ととの比較><日付演算があります。

于 2012-11-20T17:29:26.623 に答える
1

日付にテキストを使用することはお勧めしません。

あなたがテキストで欠けているすべての機能を見てください

それらを使用したい場合は、キャストする必要があります。誤って保存された日付がテキストの有効な原因でなく、検証が行われない場合にのみ問題になります。

于 2012-11-20T17:29:13.793 に答える
1

これは、データに対して実行する操作によって異なります。

数値データに対して多くの演算を行う場合は、それをある種の数値データ型として格納する方が理にかなっています。また、データを番号順に並べ替える場合は、データを数値として保存すると非常に役立ちます。

テキストとして保存する場合、「1」は「9」よりも前にあるため、「11」は「9」よりも前になります。これが希望どおりでない場合は、テキストを使用しないでください。

一方、郵便番号や社会保障番号、電話番号などの数字の文字列をテキストとして保存することは、多くの場合意味があります。

于 2012-11-21T01:44:27.983 に答える
1

他の回答がすでに提供しているものに加えて:

textCOLLATIONまた、エンコードの対象となるため、プラットフォーム間の移植性とデータ交換が複雑になる可能性があります。また、並べ替え操作の速度が低下します。

のストレージサイズに関してtext:4integerバイトを占有します(データアライメントのためにパディングの対象となります)。textまたは、varchar1バイトと実際の文字列を占有します。これは、UTF-8のASCII文字の場合は1バイト、特殊文字の場合は1バイト以上です。ほとんどの場合、textはるかに大きくなります。

于 2012-11-20T19:53:16.297 に答える