更新現(xiàn)有 text、ntext 或 image 字段。使用 UPDATETEXT 在適當(dāng)?shù)奈恢酶?text、ntext 或 image 列的一部分。使用 WRITETEXT 來更新和替換整個 text、ntext 或 image 字段。
UPDATETEXT { 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
} ]
table_name.dest_column_name
要更新的表和 text、ntext 或 image 列的名稱。表名和列名必須符合標(biāo)識符的規(guī)則。有關(guān)更多信息,請參見使用標(biāo)識符。指定數(shù)據(jù)庫名和所有者名是可選的。
dest_text_ptr
指向要更新的 text、ntext 或 image 數(shù)據(jù)的文本指針的值(由 TEXTPTR 函數(shù)返回)。dest_text_ptr 必須為 binary(16)。
insert_offset
以零為基的更新起始位置。對于 text 或 image 列,insert_offset 是在插入新數(shù)據(jù)前從現(xiàn)有列的起點開始要跳過的字節(jié)數(shù)對于 ntext 列,insert_offset 是字符個數(shù)(每個 ntext 字符占用 2 個字節(jié))。開始于這個以零為基的起始點的現(xiàn)有 text、ntext 或 image 數(shù)據(jù)向右移,為新數(shù)據(jù)騰出空間。值為 0 表示將新數(shù)據(jù)插入到現(xiàn)有位置的開始處。值為 NULL 則將新數(shù)據(jù)追加到現(xiàn)有數(shù)據(jù)值中。
delete_length
是從 insert_offset 位置開始的、要從現(xiàn)有 text、ntext 或 image 列中刪除的數(shù)據(jù)長度。delete_length 值對于 text 和 image 列用字節(jié)指定,對于 ntext 列用字符指定。每個 ntext 字符占用 2 個字節(jié)。值為 0 表示不刪除數(shù)據(jù)。值為 NULL 則刪除現(xiàn)有 text 或 image 列中從 insert_offset 位置開始到末尾的所有數(shù)據(jù)。
WITH LOG
在 Microsoft® SQL Server™ 2000 中被忽略。在該版本中,日志記錄由數(shù)據(jù)庫的有效恢復(fù)模型決定。
inserted_data
是要插入到現(xiàn)有 text、ntext 或 image 列 insert_offset 位置的數(shù)據(jù)。這是單個 char、nchar、varchar、nvarchar、binary、varbinary、text、ntext 或 image 值。inserted_data 可以是文字或變量。
table_name.src_column_name
用作插入數(shù)據(jù)源的表或 text、ntext 或 image 列的名稱。表名和列名必須符合標(biāo)識符的規(guī)則。
src_text_ptr
指向作為插入數(shù)據(jù)源使用的 text、ntext 或 image 列的文本指針值(由 TEXTPTR 函數(shù)返回)。
新插入的數(shù)據(jù)可以是單個 inserted_data 常量、表名、列名或文本指針。
Update 操作 | UPDATETEXT 參數(shù) |
---|---|
替換現(xiàn)有數(shù)據(jù) | 指定一個非空 insert_offset 值、非零 delete_length 值和要插入的新數(shù)據(jù)。 |
刪除現(xiàn)有數(shù)據(jù) | 指定一個非空 insert_offset 值、非零 delete_length 值。不指定要插入的新數(shù)據(jù)。 |
插入新數(shù)據(jù) | 指定 insert_offset 值、為零的 delete_length 值和要插入的新數(shù)據(jù)。 |
在 SQL Server 2000 中,可能存在指向 text、ntext 或 image 數(shù)據(jù)的行內(nèi)文本指針,但這些指針無效。有關(guān) text in row 選項的信息,請參見 sp_tableoption。有關(guān)使文本指針無效的信息,請參見 sp_invalidate_textptr。
當(dāng)兼容級別等于 65時,要將 text 列初始化為 NULL,請使用 UPDATETEXT。如果兼容級別等于 70,則使用 WRITETEXT 將 text 列初始化為 NULL;否則 UPDATETEXT 將 text 列初始化為空字符串。有關(guān)設(shè)置兼容級別的信息,請參見 sp_dbcmptlevel。
UPDATETEXT 權(quán)限默認授予在指定表上具有 SELECT 權(quán)限的用戶。這些權(quán)限可在傳遞 SELECT 權(quán)限時傳遞。
本示例把文本指針置于局部變量 @ptrval 中,然后使用 UPDATETEXT 更新拼寫錯誤。
USE pubs
GO
EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'true'
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
EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'false'
GO
相關(guān)文章