回答:
SQL Server 2005以降を使用してvarchar(MAX)いる場合は、を使用します。textデータ型が廃止されており、新規の開発作業のために使用すべきではありません。ドキュメントから:
重要
ntext、text、およびimageデータ型は、Microsoft SQL Serverの将来のバージョンでは削除されます。新しい開発作業でこれらのデータ型を使用することは避け、現在それらを使用しているアプリケーションの変更を計画してください。使用NVARCHAR(MAX) 、varchar型(最大)、およびvarbinary型(最大)の代わりに。
TEXT大きな文字列データに使用されます。フィールドの長さが特定のしきい値を超えると、テキストは行外に格納されます。
VARCHARは常に行に格納され、8000文字の制限があります。あなたが作成しようとするとVARCHAR(x)、どこのx> 8000、エラーが発生します:
サーバー:メッセージ131、レベル15、状態3、行1
タイプ 'varchar'に指定されたサイズ()は、すべてのデータタイプで許可されている最大値(8000)を超えています
これらの長さの制限は心配しないVARCHAR(MAX)でSQL Server 2005のと同じように、行外に格納することができます、TEXT。
注MAXここでは、一定の種類のものです、VARCHARそしてVARCHAR(MAX)、後者は非常に近くに非常に異なるタイプがありますTEXT。
以前のバージョンのSQL Serverでは、TEXT直接にアクセスできず、を取得TEXTPTRしREADTEXTてWRITETEXT関数内でのみ使用できました。
でSQL Server 2005のことができます直接アクセスTEXT列(あなたはまだして明示的なキャストが必要なもののVARCHAR、彼らのために値を代入します)。
TEXT いいね:
VARCHAR いいね:
選択ここで私は、列の値を返す任意のクエリを発行することを意味します。
検索ここで私は、その結果の値に依存して任意のクエリの発行を意味するTEXTか、VARCHAR列を。これには、任意のJOINor WHERE条件での使用が含まれます。
ようにTEXT行の外格納され、関与しないクエリTEXTの列は、通常より高速です。
何TEXTが良いのかの例:
何VARCHARが良いのかの例:
経験則として、あなたは今まで超えることがあなたにテキスト値が必要な場合は、200個の文字をと、この列に加わる使用は使用しないでくださいTEXT。
それ以外の場合はを使用しますVARCHAR。
PS同じことがUNICODE有効NTEXTにさNVARCHARれている場合にも当てはまります。上記の例で使用する必要があります。
PPS同じことが適用されるにVARCHAR(MAX)してNVARCHAR(MAX)いることをSQL Serverの2005+の使用の代わりに、TEXTとNTEXT。それらを常に行外に格納する場合はlarge value types out of row、それらを有効にする必要がありますsp_tableoption。
上記とここで述べたように、TEXTは将来のリリースで廃止される予定です。
この
text in rowオプションは、SQL Serverの将来のバージョンでは削除される予定です。新しい開発作業ではこのオプションの使用を避け、現在を使用しているアプリケーションの変更を計画してくださいtext in row。、、またはデータタイプを使用してvarchar(max)、大きなデータを保存することをお勧めします。これらのデータ型の行内および行外の動作を制御するには、オプションを使用します。nvarchar(max)varbinary(max)large value types out of row
SQLサーバー2005の新しいデータ型が導入されました。varchar(max)そしてnvarchar(max)
彼らは、古いテキスト型の利点を持っている:彼らはデータの2ギガバイトにOPを含めることができますが、彼らはまたの利点のほとんどを持っているvarcharとnvarchar。これらの利点の中には、substring()などの文字列操作関数を使用する機能があります。
また、サイズが8KB未満の場合、varchar(max)はテーブルの(ディスク/メモリ)スペースに格納されます。フィールドにさらにデータを配置した場合にのみ、データはテーブルのスペースの外に格納されます。テーブルのスペースに格納されているデータは、(通常)より速く取得されます。
簡単に言うと、(n)varchar(max)というより良い代替手段があるため、Textは使用しないでください。また、通常のvarcharが十分に大きくない場合、つまり、格納する文字列が8000文字を超えることが予想される場合にのみ、varchar(max)を使用してください。
前述のように、TEXTデータ型でSUBSTRINGを使用できますが、TEXTフィールドに含まれる文字数が8000文字未満である場合に限ります。
2008年のmsにはいくつかの大きな変更がありました->使用するデータ型を決定するときは、次の記事を検討する価値があります。 http://msdn.microsoft.com/en-us/library/ms143432.aspx
あたりのバイト数