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
    トランザクションが終了するまでテキスト値の読み取りをロックします。他のユーザーは読み取りはできますが、変更はできません。

説明

有効な text_ptr 値を取得するには、TEXTPTR 関数を使用します。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)」を参照してください。

READTEXT で指定されたサイズよりも @@TEXTSIZE 関数の値の方が小さい場合は、READTEXT に代わって @@TEXTSIZE 関数の値が使用されます。@@TEXTSIZE 関数は、SET TEXTSIZE ステートメントで設定される、返されるデータのバイト数の上限を指定します。TEXTSIZE のセッション設定の設定方法の詳細については、SET TEXTSIZE (Transact-SQL)」を参照してください。

権限

READTEXT 権限は、特に指定のない限り指定されたテーブルで SELECT 権限を持つユーザーに与えられます。SELECT 権限を譲渡した場合は、READTEXT 権限を譲渡できます。

次の例では、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