Share via


ntext 型、text 型、または image 型の各データの変更

値全体を置き換えるときに、行内の ntext 型、text 型、または image 型の値を次の方法で更新できます。

  • データ量が比較的少ない場合は、char 型、nchar 型、または binary 型のデータと同じように UPDATE ステートメントに指定します。

  • WRITETEXT を使用します。

  • ntext 型、text 型、または image 型の大きなデータを ADO アプリケーションで指定するには、AppendChunk メソッドを使用します。

  • ntext 型、text 型、または image 型の新しい値を OLE DB アプリケーションで書き込むには、ISequentialStream インターフェイスを使用します。詳細については、「BLOB と OLE オブジェクト」を参照してください。

  • ntext 型、text 型、または image 型の新しい値を ODBC アプリケーションで書き込むには、SQLPutData の実行時データ形式を使用します。詳細については、「text 列と image 列の管理」を参照してください。

  • DB-Library アプリケーションでは dbwritetext 関数を使用します。詳細については、「テキスト関数とイメージ関数 (Transact-SQL)」を参照してください。

SQL Server では、ntext 型、text 型、または image 型の値の一部だけの更新もサポートされます。DB-Library では、これを dbupdatetext 関数で行うことができます。他のアプリケーションと Transact-SQL スクリプト、バッチ、ストアド プロシージャ、およびトリガでは、UPDATETEXT ステートメントを使用して ntext、text、image の各列の一部だけを更新できます。

次のスクリプトでは、UPDATETEXT と PATINDEX を使用して text 型の値の中にある特定の文字列を検索し、置き換えています。

USE Northwind
GO
CREATE TABLE TextParts (ColA INT PRIMARY KEY, ColB TEXT)
GO
INSERT INTO TextParts
   VALUES( 1,
           'Sample string START TAG Text to go END TAG Trailing text.')
GO
DECLARE @PtrVar BINARY(16)
DECLARE @InsertPos INT
DECLARE @DeleteLen INT

SELECT @PtrVar = TEXTPTR(ColB),
       @InsertPos = (PATINDEX('%START TAG%', ColB) + 9),
       @DeleteLen = (
                      PATINDEX('%END TAG%', ColB) -
                      ( PATINDEX('%START TAG%', ColB) + 9
                              + 2 /* allow for blanks */ )
                    )
FROM TextParts
WHERE ColA = 1

UPDATETEXT TextParts.ColB
           @PtrVar
           @InsertPos
           @DeleteLen
           WITH LOG
           'The new text'
GO

SELECT * FROM TextParts
GO

次に、最終的な SELECT ステートメントの結果セットを示します。

ColA        ColB
----------- ------------------------------------------------------------
1           Sample string START TAG The new text END TAG Trailing text.