SQL Server中TEXT型別操作

2021-09-08 21:12:01 字數 3161 閱讀 8832

sql server中text型別字段值在資料庫中追加字串方法

對text型別字段值進行追加更新的操作,一開始用了簡單的update語句試了試,有錯誤,原來text、ntext型別的字段不能和 varchar型別進行add(+)運算,找了半天資料,查了一下幫助文件,終於找到了如何解決的方法了。

表:create table [dbo].[test] (

[id] [int] identity (1, 1) not null ,

[mytext] [text] collate chinese_prc_ci_as null

) on [primary] textimage_on [primary]

go資料:

id      mytext

1       aaaa

在text型別中追加字串:

declare @ptrval binary(16)

select @ptrval = textptr(mytext) from test

updatetext test.mytext @ptrval null 0 'bbbb'

執行結果:

id      mytext

1       aaaabbbb

追加成功,這個是在資料庫中完成的,操作text型別欄位的和操作普通其它字串型別欄位是不一樣的,這裡需要用updatetext語句才行。

下面是updatetext的幫助說明:

updatetext

更新現有 text、ntext 或 image 字段。使用 updatetext 在適當的位置更改 text、ntext 或 image 列的一部分。使用 writetext 來更新和替換整個 text、ntext 或 image 字段。

語法updatetext

[ with log ]

[ inserted_data

| ]

引數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

是從 insert_offset 位置開始的、要從現有 text、ntext 或 image 列中刪除的資料長度。delete_length 值對於 text 和 image 列用位元組指定,對於 ntext 列用字元指定。每個 ntext 字元占用 2 個位元組。值為 0 表示不刪除資料。值為 null 則刪除現有 text 或 image 列中從 insert_offset 位置開始到末尾的所有資料。

with log

在 microsoft® sql server™ 2000 中被忽略。在該版本中,日誌記錄由資料庫的有效恢復模型決定。

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 函式返回)。

注釋新插入的資料可以是單個 inserted_data 常量、表名、列名或文字指標。

update 操作 updatetext 引數

替換現有資料 指定乙個非空 insert_offset 值、非零 delete_length 值和要插入的新資料。

刪除現有資料 指定乙個非空 insert_offset 值、非零 delete_length 值。不指定要插入的新資料。

插入新資料 指定 insert_offset 值、為零的 delete_length 值和要插入的新資料。

在 sql server 2000 中,可能存在指向 text、ntext 或 image 資料的行內文字指標,但這些指標無效。有關 text in row 選項的資訊,請參見 sp_tableoption。有關使文字指標無效的資訊,請參見 sp_invalidate_textptr。

當相容級別等於 65時,要將 text 列初始化為 null,請使用 updatetext。如果相容級別等於 70,則使用 writetext 將 text 列初始化為 null;否則 updatetext 將 text 列初始化為空字串。有關設定相容級別的資訊,請參見 sp_dbcmptlevel。

許可權updatetext 許可權預設授予在指定表上具有 select 許可權的使用者。這些許可權可在傳遞 select 許可權時傳遞。

示例本示例把文字指標置於區域性變數 @ptrval 中,然後使用 updatetext 更新拼寫錯誤。

use pubsgoexec sp_dboption 'pubs', 'select into/bulkcopy', 'true'godeclare @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' goexec sp_dboption 'pubs', 'select into/bulkcopy', 'false'go

0 頂一下

SQL語句 SQL Server中Text型別操作

基本方法 updatetext with log inserted data 新插入的資料可以是單個inserted data 常量 表名 列名或文字指標。update 操作 updatetext 引數 替換現有資料 指定乙個非空 insert offset 值 非零 delete length 值...

SqlServer替換text型別資料解決方案

歡迎加入技術交流qq群80669150 一起學習 tips replace 欄位名或內容,需要替換的字串,替換後的字串 content 為欄位名 text型別 重點 替換時將text型別轉換成nvarchar max 型別 sql2005 版本,請轉換為nvarchar max sql2005 版本...

C 操作SQL Server中的Image型別資料

該例子是乙個對sql server資料型別的乙個操作例子,具有寫入 讀取功能。1 準備資料庫 1 建立資料庫 test 2 建立表 table 1 分別有2個字段 id int photo image 如圖 2 用c 進行讀寫操作,完整 如下 using system using system.co...