共用方式為


UPDATETEXT (Transact-SQL)

更新現有的 text、ntext 或 image 欄位。 請利用 UDPATETEXT 來就地變更 text、ntext 或 image 資料行的一部分。 請利用 WRITETEXT 來更新和取代整個 text、ntext 或 image 欄位。

重要事項重要事項

未來的 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 選項。

    重要事項重要事項

    我們建議您不要將 BULK 選項用於以 SQL Server 為基礎的應用程式中。 未來的 SQL Server 版本可能會變更或移除這個選項。

  • table_name . dest_column_name
    這是要更新的資料表和 text、ntext 或 image 資料行的名稱。 資料表名稱和資料行名稱必須符合識別碼的規則。 資料庫名稱和擁有者名稱的指定是選擇性的。

  • dest_text_ptr
    這是指向要更新的 text、ntext 或 image 資料的文字指標值 (TEXTPTR 函數所傳回)。 dest_text_ptr 必須是 binary(16)。

  • insert_offset
    這是以零為基底的更新起始位置。 如果是 text 或 image 資料行,insert_offset 是在插入新資料之前,從現有資料行起點跳過的位元組數。 如果是 ntext 資料行,insert_offset 是字元數目 (每個 ntext 字元使用 2 位元組)。 從這個以零為基底之起始位置開始的現有 text、ntext 或 image 資料,會向右位移來騰出新資料的空間。 0 值會將新資料插入現有資料的起點。 NULL 值會將新資料附加至現有的資料值。

  • delete_length
    這是要從現有 text、ntext 或 image 資料行中刪除的資料長度,從 insert_offset 位置開始。 text 和 image 資料行的 delete_length 值以位元組來指定,ntext 資料行的這個值以字元來指定。 每個 ntext 字元都使用 2 位元組。 0 值不會刪除任何資料。 NULL 值會刪除從 insert_offset 位置到現有 text 或 image 資料行結尾的所有資料。

  • WITH LOG
    記錄取決於資料庫的實際復原模式。

  • inserted_data
    這是要在 insert_offset 位置插入現有 text、ntext 或 image 資料行的資料。 這是單一 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 值相同。

備註

新插入的資料可以是單一 inserted_data 常數、資料表名稱、資料行名稱或文字指標。

更新動作

UPDATETEXT 參數

若要取代現有的資料

請指定非 Null 的 insert_offset 值、非零的 delete_length 值,以及要插入的新值。

若要刪除現有的資料

請指定非 Null insert_offset 值和非零的 delete_length。 請勿指定要插入的新資料。

若要插入新的資料

請指定 insert_offset 值、delete_length 0,以及要插入的新資料。

若要有最佳效能,我們建議您以 8,040 位元組倍數的片段大小來插入或更新 text、ntext 和 image 資料。

在 SQL Server 中,指向 text、ntext 或 image 資料的同資料列文字指標有可能存在而無效。 如需有關 text in row 選項的詳細資訊,請參閱<sp_tableoption (Transact-SQL)>。 如需有關讓文字指標無效的詳細資訊,請參閱<sp_invalidate_textptr (Transact-SQL)>。

若要將 text 資料行初始化為 NULL,請使用 WRITETEXT;UPDATETEXT 將 text 資料行初始化為空字串。

權限

需要指定之資料表的 UPDATE 權限。

範例

下列範例將文字指標放在區域變數 @ptrval 中,再利用 UPDATETEXT 來更新拼字錯誤。

[!附註]

若要執行這個範例,您必須安裝 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

請參閱

參考

READTEXT (Transact-SQL)

TEXTPTR (Transact-SQL)

WRITETEXT (Transact-SQL)