在SQL server 2000 中 如何更新表中的text、ntext 或 image 欄位資訊

來源:互聯網
上載者:User

   在工作中我們往往需要儲存大於8k的資訊到資料庫中表的Text,ntext,image 欄位中,在資料維護的過程中,可能會出現這樣的情況將已經一個位置上的儲存資訊儲存到另外的一個地方。

   當資料的大小小於8k時,我們可以用下面的這樣的方式
     注意 下面的例子使用的表的結構如下:
  
 Photos 表名
    
欄位             資料類型
    
Photo            Image 類型
    
PersonIdentity   varchar(18) 類型 主鍵

Go
   declare @ptrval binary(16) --定義指標
   Select @ptrval = TEXTPTR(photo) from Photos where PersonIdentity=’需要更新資訊的人員標識’ 
                                                               --設定指標
   Declare @InformationForInsert varchar(8000)
   Select  @InformationForInsert= substring(photo,0,8000) from Photos Where PersonIdentity=’需要提取資訊的人員標識’
   WRITETEXT Photos.photo @ptrval @InformationForInsert         --儲存資訊
Go

  
  
 這樣的方法只能在資料小於8k的情況下使用 注意當大於8k的時候這樣的方法就不能用拉

 
 

現在我們分析一下,理論上來講我們需要提供資訊包括為儲存資訊的位置,儲存資訊的來源,就這兩個資訊就可以拉。
 這麼來實現呢

 我們可以這樣利用UPDATETEXT來實現。

舉例:
 

Go

  declare @ptr_NeedInsert binary(16) --定義指標
  declare @Ptr_InsertInformation binary(16) --定義指標

  Select @ptr_NeedInsert = TEXTPTR(photo) from Photos where PersonIdentity=’需要更新資訊的人員標識’ 
                                          --設定指標

  select @Ptr_InsertInformation = TEXTPTR(photo) from Photos Where PersonIdentity=’需要提取資訊的人員標識’
                      --設定指標
 
  UPDATETEXT Photos.Photo @ptr_NeedInsert 0 null  Photos.Photo @Ptr_InsertInformation 
Go

UpDateText 的文法如下:

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 
      指標對應的表名和欄位名

dest_text_ptr
需要維護的指標  注意指標的大小必須為 binary(16)類型

insert_offset
插入的位置 : 0 為開始位置

delete_length
刪除資料的長度 : 注意當為NUll是為清空原來的資料

inserted_data
是要插入到現有 textntext imageinsert_offset 位置的資料,注意這是可選的 ,插入資料有長度的限制
table_name.src_column_name
用作插入資料來源的表或 textntext image 列的名稱。
src_text_ptr
插入的資料來源的指標.

原創請勿轉載                                                                                      --小徐  20070205  下午

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.