UPDATETEXT (Transact-SQL)

既存の text 型、ntext 型、または image 型のフィールドを更新します。text 型、ntext 型、または image 型の列の一部だけを適切に変更するには、UPDATETEXT を使用します。text 型、ntext 型、または image 型のフィールド全体を更新して置き換えるには、WRITETEXT を使用します。

重要な注意事項重要

この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。新しい開発作業では、この機能の使用を避け、現在この機能を使用しているアプリケーションは修正するようにしてください。代わりに、大きな値のデータ型と UPDATE ステートメントの WRITE 句を使用してください。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

UPDATETEXT [BULK] { table_name.dest_column_name dest_text_ptr }
    { NULL | insert_offset }
     { NULL | delete_length }
     [ WITH LOG ]
     [ inserted_data
    | { table_name.src_column_name src_text_ptr } ]

引数

  • BULK
    アップロード ツールによるバイナリ データ ストリームのアップロードを有効にします。ストリームは、TDS プロトコル レベルでツールが提供する必要があります。データ ストリームが存在しない場合、クエリ プロセッサは BULK オプションを無視します。

    重要な注意事項重要

    SQL Server ベースのアプリケーションでの BULK オプションの使用はお勧めしません。このオプションは将来のバージョンの SQL Server では変更または削除される可能性があります。

  • table_name**.**dest_column_name
    更新するテーブルと text 型、ntext 型、または image 型の列の名前を指定します。テーブル名と列名は、識別子の規則に従っている必要があります。データベース名と所有者名の指定は省略可能です。

  • dest_text_ptr
    更新する text 型、ntext 型、または image 型のデータを指す、テキスト ポインター値を指定します。テキスト ポインター値は TEXTPTR 関数から返されます。dest_text_ptr のデータ型は binary(16) であることが必要です。

  • insert_offset
    更新の開始位置を 0 を起点として指定します。text 型または image 型の列の場合、insert_offset には、既存の列の開始位置から新しいデータの開始位置までにスキップするバイト数を指定します。ntext 型の列の場合、insert_offsetには文字数を指定します。各 ntext 文字は 2 バイトです。この 0 を起点とした開始位置から始まる既存の text 型、ntext 型、または image 型の各データは、新しいデータの分だけ右に移動します。値 0 を指定した場合、新しいデータは既存のデータの先頭に挿入されます。NULL の場合、新しいデータは既存のデータの最後に追加されます。

  • delete_length
    既存の text 型、ntext 型、または image 型の列で、insert_offset で指定した位置から後にある、削除するデータの長さを指定します。delete_length値は、text 型および image 型の列の場合はバイト数、ntext 型の列の場合は文字数で指定します。各 ntext 型文字は 2 バイトです。値 0 を指定した場合、データは削除されません。NULL の場合、既存の text 型または image 型の列で、insert_offset の位置から終わりまでのすべてのデータが削除されます。

  • WITH LOG
    ログ記録は、データベースで有効になっている復旧モデルによって異なります。

  • inserted_data
    既存の text 型、ntext 型、または image 型の各列の、insert_offset で指定した位置に挿入するデータを指定します。これは char 型、nchar 型、varchar 型、nvarchar 型、binary 型、varbinary 型、text 型、ntext 型、または image 型の単一の値になります。inserted_data には、リテラルまたは変数を指定できます。

  • table_name.src_column_name
    挿入するデータのソースとして使用する、テーブルおよび text 型、ntext 型、または image 型の列の名前を指定します。テーブル名と列名は、識別子の規則に従っている必要があります。

  • src_text_ptr
    挿入するデータのソースとして使用できる、text 型、ntext 型、または image 型の各列を指すテキスト ポインターの値を指定します。テキスト ポインターの値は TEXTPTR 関数から返されます。

    注意

    scr_text_ptr には、dest_text_ptrと同じ値は指定できません。

説明

新しく挿入するデータには、1 つの inserted_data 定数、テーブル名、列名、またはテキスト ポインターを使用できます。

更新操作

UPDATETEXT パラメーター

既存のデータの置換

NULL 以外の insert_offset 値、0 以外の delete_length 値、および挿入する新しいデータを指定します。

既存のデータの削除

NULL 以外の insert_offset 値と 0 以外の delete_length 値を指定します。挿入する新しいデータは指定しないでください。

新しいデータの挿入

insert_offset 値、0 の delete_length 値、および挿入する新しいデータを指定します。

最適なパフォーマンスを得るには、8,040 バイトの倍数単位で text 型、ntext 型および image 型データを挿入または更新することをお勧めします。

SQL Server では、text 型、ntext 型および image 型データへの行内テキスト ポインターが存在する場合がありますが、これらが有効になっていない場合もあります。text in row オプションについては、「sp_tableoption (Transact-SQL)」を参照してください。テキスト ポインターを無効にする方法については、「sp_invalidate_textptr (Transact-SQL)」を参照してください。

text 型の列を NULL に初期化するには、互換性レベルが 65 の場合は UPDATETEXT を使用します。互換性レベルが 70 の場合は、WRITETEXT を使用して text 型の列を NULL に初期化します。それ以外の場合、UPDATETEXT では text 型の列が空の文字列に初期化されます。互換性レベルの設定については、「sp_dbcmptlevel (Transact-SQL)」を参照してください。

権限

指定したテーブルの UPDATE 権限が必要です。

次の例では、テキスト ポインターをローカル変数 @ptrval に代入した後、UPDATETEXT を使用してスペルミスを更新します。

注意

この例を実行するには、pubs データベースをインストールする必要があります。pubs データベースをインストールする方法の詳細については、「Northwind サンプル データベースと pubs サンプル データベースのダウンロード」を参照してください。

USE pubs;
GO
ALTER DATABASE pubs SET RECOVERY SIMPLE;
GO
DECLARE @ptrval binary(16);
SELECT @ptrval = TEXTPTR(pr_info) 
   FROM pub_info pr, publishers p
      WHERE p.pub_id = pr.pub_id 
      AND p.pub_name = 'New Moon Books'
UPDATETEXT pub_info.pr_info @ptrval 88 1 'b';
GO
ALTER DATABASE pubs SET RECOVERY FULL;
GO