TEXT
データ型を使用してID番号をデータベースに格納した場合、悪影響はありますか?私は次のようなことをします:
CREATE TABLE GenData ( EmpName TEXT NOT NULL, ID TEXT PRIMARY KEY);
実際、日付値を格納する場合は、通常、TEXT
データ型を使用します。これが間違った方法である場合、その欠点は何ですか?
私はを使用してPostgreSQL
います。
TEXT
データ型を使用してID番号をデータベースに格納した場合、悪影響はありますか?私は次のようなことをします:
CREATE TABLE GenData ( EmpName TEXT NOT NULL, ID TEXT PRIMARY KEY);
実際、日付値を格納する場合は、通常、TEXT
データ型を使用します。これが間違った方法である場合、その欠点は何ですか?
私はを使用してPostgreSQL
います。
テキスト列に数値を格納することは非常に悪い考えです。これを行うと、多くの利点が失われます。
普段TEXTを使っている日付の値を保存したい
それは別の 非常に悪い考えです。主に同じ理由で、テキスト列に数値を格納するべきではありません。完全に間違った日付(「foo」)に加えて、「無効な」日付(たとえば、2月31日)も防ぐことはできません。そして、並べ替え、ととの比較>
、<
日付演算があります。
日付にテキストを使用することはお勧めしません。
あなたがテキストで欠けているすべての機能を見てください
それらを使用したい場合は、キャストする必要があります。誤って保存された日付がテキストの有効な原因でなく、検証が行われない場合にのみ問題になります。
これは、データに対して実行する操作によって異なります。
数値データに対して多くの演算を行う場合は、それをある種の数値データ型として格納する方が理にかなっています。また、データを番号順に並べ替える場合は、データを数値として保存すると非常に役立ちます。
テキストとして保存する場合、「1」は「9」よりも前にあるため、「11」は「9」よりも前になります。これが希望どおりでない場合は、テキストを使用しないでください。
一方、郵便番号や社会保障番号、電話番号などの数字の文字列をテキストとして保存することは、多くの場合意味があります。
他の回答がすでに提供しているものに加えて:
text
COLLATION
また、エンコードの対象となるため、プラットフォーム間の移植性とデータ交換が複雑になる可能性があります。また、並べ替え操作の速度が低下します。
のストレージサイズに関してtext
:4integer
バイトを占有します(データアライメントのためにパディングの対象となります)。text
または、varchar
1バイトと実際の文字列を占有します。これは、UTF-8のASCII文字の場合は1バイト、特殊文字の場合は1バイト以上です。ほとんどの場合、text
はるかに大きくなります。