READTEXT (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

textntextimage 資料行中讀取 textntextimage 值。 從所指定位移開始讀取指定數目的位元組。

重要

SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 請改用 SUBSTRING 函數。

Transact-SQL 語法慣例

Syntax

READTEXT { table.column text_ptr offset size } [ HOLDLOCK ]  

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

table.column
這是要讀取的資料表和資料行名稱。 資料表和資料行名稱必須滿足識別碼的規則。 您必須指定資料表和資料行名稱;不過,資料庫名稱和擁有者名稱的指定是選擇性的。

text_ptr
這是一個有效的文字指標。 text_ptr 必須是 binary(16).

offset
是使用 textimage 資料類型時的位元組數目。 它也可以是開始讀取 textimagentext 資料之前,ntext 資料類型用來略過的字元位元組數目。

size 是使用 textimage 資料類型時的位元組數目。 它也可以是 ntext 資料類型用於資料讀取時的字元位元組數目。 如果 size 是 0,就會讀取 4 KB 位元組的資料。

HOLDLOCK
造成讀取文字值的鎖定,直到交易結束為止。 其他使用者可以讀取值,但無法加以修改。

備註

請使用 TEXTPTR 函數來取得有效的 text_ptr 值。 TEXTPTR 會傳回指定資料列中 textntextimage 資料行的指標。 如果查詢傳回多個資料列,TEXTPRT 也可以傳回指向查詢所傳回最後一個資料列之 textntextimage 資料行的指標。 由於 TEXTPTR 會傳回 16 位元組二進位字串,我們建議您宣告一個本機變數來存放文字指標,再搭配 READTEXT 來使用這個變數。 如需有關宣告本機變數的詳細資訊,請參閱 DECLARE @local_variable (Transact-SQL)

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

如果 @@TEXTSIZE 函數的值小於 READTEXT 的指定大小,其會取代指定給 READTEXT 的大小。 @@TEXTSIZE 函式會指定對 SET TEXTSIZE 陳述式所設定之傳回資料位元組數目的限制。 如需有關如何設定 TEXTSIZE 之工作階段設定的詳細資訊,請參閱 SET TEXTSIZE (Transact-SQL)

權限

READTEXT 權限預設為授與有指定資料表之 SELECT 權限的使用者。 當傳送 SELECT 權限時,可以傳送權限。

範例

下列範例會讀取 pub_info 資料表中 pr_info 資料行的第 2 到第 26 個字元。

注意

若要執行這個範例,則必須安裝 pubs 範例資料庫。

USE pubs;  
GO  
DECLARE @ptrval VARBINARY(16);  
SELECT @ptrval = TEXTPTR(pr_info)   
   FROM pub_info pr INNER JOIN publishers p  
      ON pr.pub_id = p.pub_id   
      AND p.pub_name = 'New Moon Books'  
READTEXT pub_info.pr_info @ptrval 1 25;  
GO  

另請參閱

@@TEXTSIZE (Transact-SQL)
UPDATETEXT (Transact-SQL)
WRITETEXT (Transact-SQL)