状況:
varchar(20)
Teradataでは静かに切り捨てられ、20文字を超える文字列に遭遇しても拡張または文句を言わないようです...これは、列を30文字などのより大きな文字列に合わせて自動拡張することを期待していたため、少し驚きです。より大きな文字列が検出された場合にスローされるエラー。サイレント切り捨ては、私をすべての世界の中で最悪の状態にさせるようです...
合併症:
私のアプリケーション(プロトタイプ分析設計)の場合、数週間の間に取り込むデータの大きさは事前にわかりません。maxを除いて、varchar(N)の使用は除外されているようです。
質問:
だから今、私はいくつかの選択肢があり、いくつかのガイダンスを探しています:
Q1。ユーザーエラー?私はについての重要な概念を誤解していますvarchar(N)
か?
これが実際にTeradataがvarchar
フィールドを処理する方法である場合、
Q2。varchar(max)
フィールドに何文字を格納する必要があるかが事前に明確でない場合、なぜ誰かが特に以下のものを指定するのでしょうか。
Q3。文字列の柔軟なサイズ設定を可能にする別のデータ型、つまり真の可変長文字列はありますか?
思い出してください。他のSQLダイアレクトvarchar(n)
は、文字列の推奨初期サイズとして実装されていますが、スローされるデータ文字列の最大長に合わせて必要に応じて拡張できます。Teradataにも同様のデータ型がありますか?
(注:私はテーブルのプロトタイプを作成しているので、この時点ではパフォーマンスの効率についてはあまり心配していません。プロトタイプを進行させるための迅速で安全な設計についてはもっと心配しています。)