共用方式為


變更 ntext、text 或 image 資料

當您要取代整個值時,可以下列方式更新資料列中的 ntexttextimage 值。

  • 在 UPDATE 陳述式中指定較短的資料量,就像指定 charncharbinary 資料一樣。
  • 使用 WRITETEXT
  • ADO 應用程式可使用 AppendChunk 方法來指定 ntexttextimage 的長資料。
  • OLE DB 應用程式可使用 ISequentialStream 介面,來寫入新的 ntexttextimage 值。如需詳細資訊,請參閱<BLOBs and OLE Objects>。
  • ODBC 應用程式可使用 SQLPutData 資料執行中的格式,來寫入新的 ntexttextimage 值。如需詳細資訊,請參閱<Managing Text and Image Columns>。
  • DB-Library 應用程式可使用 dbwritetext 函數。如需詳細資訊,請參閱<Text 和 Image 函數 (Transact-SQL)>。

SQL Server 2005 也支援僅更新 ntexttextimage 值的一部份。在 DB-Library 中可使用 dbupdatetext 函數來進行這類更新。其他所有應用程式與 Transact-SQL 指令碼、批次、預存程序以及觸發程序可以使用 UPDATETEXT 陳述式,僅更新 ntexttextimage 資料行的一部份。

下列指令碼顯示如何使用 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.

請參閱

概念

使用 UPDATE 來變更資料
使用資料指標變更資料

其他資源

下載 Northwind 和 pubs 範例資料庫

說明及資訊

取得 SQL Server 2005 協助