sql >> データベース >  >> RDS >> Sqlserver

SQLServerのテキスト型とvarcharデータ型

    TEXT 大きな文字列データに使用されます。フィールドの長さが特定のしきい値を超えた場合、テキストは行外に格納されます。

    VARCHAR 常に行に格納され、 8000の制限があります 文字。 VARCHAR(x)を作成しようとした場合 、ここで x> 8000 、エラーが発生します:

    サーバー:メッセージ131、レベル15、状態3、行1

    タイプ「varchar」に指定されたサイズ()は、任意のデータタイプで許可されている最大値(8000)を超えています

    これらの長さの制限は、VARCHAR(MAX)には関係ありません。 SQL Server 2005 TEXTのように、行外に格納される場合があります 。

    MAXに注意してください ここでは一種の定数ではありません、VARCHAR およびVARCHAR(MAX) 非常に異なるタイプであり、後者はTEXTに非常に近いです 。

    以前のバージョンのSQLServer TEXTにアクセスできませんでした 直接、TEXTPTRしか取得できませんでした READTEXTで使用します およびWRITETEXT 関数。

    SQL Server 2005 TEXTに直接アクセスできます 列(ただし、VARCHARへの明示的なキャストが必要です。 それらに値を割り当てるため)。

    TEXT 良いです:

    • データベースに大きなテキストを保存する必要がある場合
    • 列の値を検索しない場合
    • この列をめったに選択せず、参加しない場合。

    VARCHAR 良いです:

    • 小さな文字列を保存する場合
    • 文字列値で検索する場合
    • 常に選択するか、結合で使用する場合。

    選択 ここでは、列の値を返すクエリを発行することを意味します。

    検索 ここでは、結果がTEXTの値に依存するクエリを発行することを意味します またはVARCHAR 桁。これには、任意のJOINでの使用が含まれます またはWHERE 状態。

    TEXTとして TEXTを含まないクエリは行外に格納されます 通常、列の方が高速です。

    TEXTの例 に適しています:

    • ブログのコメント
    • Wikiページ
    • コードソース

    VARCHARの例 に適しています:

    • ユーザー名
    • ページタイトル
    • ファイル名

    経験則として、テキスト値が 200を超える必要がある場合 文字および この列では結合を使用せず、TEXTを使用してください 。

    それ以外の場合は、VARCHARを使用します 。

    P.S. 同じことがUNICODEにも当てはまります 有効なNTEXT およびNVARCHAR 上記の例にも使用する必要があります。

    P.P.S。 同じことがVARCHAR(MAX)にも当てはまります およびNVARCHAR(MAX) そのSQLServer 2005+ TEXTの代わりに使用 およびNTEXTlarge 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を使用します オプション。



    1. SQLServerタイムアウト例外をキャッチする方法

    2. 2016年に登場するOracle12.2.0.1

    3. Joomlaのテンプレートのトップ9データベース管理システム

    4. SQLServerでN行を選択する