READTEXT (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

textntextimage 列から textntextimage 値を読み取ります。 指定されたオフセットから開始し、指定されたバイト数を読み取ります。

重要

この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに、SUBSTRING 関数を使用してください。

Transact-SQL 構文表記規則

構文

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

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

table.column
読み取り元のテーブルと列の名前です。 テーブル名と列名は、識別子のルールに従っている必要があります。 テーブル名と列名は必ず指定してください。しかし、データベース名と所有者の指定は省略可能です。

text_ptr
有効なテキスト ポインターです。 text_ptrbinary(16) 型である必要があります。

offset
データ型として text または image が使用されるときのバイト数。 textimagentext データの読み取りを開始する前に ntext データ型を使用してスキップするときの文字バイト数になる場合もあります。

size データ型として text または image が使用されるときのバイト数。 読み取るデータに ntext データ型が使用されるときの文字バイト数になる場合もあります。 size が 0 の場合、4 KB のデータが読み取られます。

HOLDLOCK
トランザクションが終了するまでテキスト値の読み取りをロックします。 他のユーザーは値を読み取ることができますが、変更はできません。

解説

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

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

アクセス許可

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

次の例では、pr_info テーブルの pub_info 列の 2 文字目から 26 文字目までを読み取ります。

Note

この例を実行するには、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)