READTEXT (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體
從 text、ntext 或 image 資料行中讀取 text、ntext 或 image 值。 從所指定位移開始讀取指定數目的位元組。
重要
SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 請改用 SUBSTRING 函數。
語法
READTEXT { table.column text_ptr offset size } [ HOLDLOCK ]
引數
資料表 列
這是要讀取的資料表和資料行名稱。 資料表和資料行名稱必須滿足識別碼的規則。 您必須指定資料表和資料行名稱;不過,資料庫名稱和擁有者名稱的指定是選擇性的。
text_ptr
這是一個有效的文字指標。 text_ptr 必須是 binary(16).
offset
是使用 text 或 image 資料類型時的位元組數目。 它也可以是開始讀取 text、image 或 ntext 資料之前,ntext 資料類型用來略過的字元位元組數目。
size 是使用 text 或 image 資料類型時的位元組數目。 它也可以是 ntext 資料類型用於資料讀取時的字元位元組數目。 如果 size 是 0,就會讀取 4 KB 位元組的資料。
HOLDLOCK
造成讀取文字值的鎖定,直到交易結束為止。 其他使用者可以讀取值,但無法加以修改。
備註
請使用 TEXTPTR 函數來取得有效的 text_ptr 值。 TEXTPTR 會傳回指定資料列中 text、ntext 或 image 資料行的指標。 如果查詢傳回多個資料列,TEXTPRT 也可以傳回指向查詢所傳回最後一個資料列之 text、ntext 或 image 資料行的指標。 由於 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)