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