READTEXT (Transact-SQL)

從 text、ntext 或 image 資料行中讀取 text、ntext 或 image 值,從指定位移開始,讀取指定數目的位元組。

重要注意事項重要事項

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

主題連結圖示Transact-SQL 語法慣例

語法

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 範例資料庫。如需有關如何安裝 pubs 範例資料庫的資訊,請參閱<下載 Northwind 和 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