READTEXT (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
text、ntext、image 列から text、ntext、image 値を読み取ります。 指定されたオフセットから開始し、指定されたバイト数を読み取ります。
重要
この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに、SUBSTRING 関数を使用してください。
構文
READTEXT { table.column text_ptr offset size } [ HOLDLOCK ]
引数
table . コラム
読み取り元のテーブルと列の名前です。 テーブル名と列名は、識別子のルールに従っている必要があります。 テーブル名と列名は必ず指定してください。しかし、データベース名と所有者の指定は省略可能です。
text_ptr
有効なテキスト ポインターです。 text_ptr は binary(16) 型である必要があります。
offset
データ型として text または image が使用されるときのバイト数。 text、image、ntext データの読み取りを開始する前に ntext データ型を使用してスキップするときの文字バイト数になる場合もあります。
size データ型として text または image が使用されるときのバイト数。 読み取るデータに ntext データ型が使用されるときの文字バイト数になる場合もあります。 size が 0 の場合、4 KB のデータが読み取られます。
HOLDLOCK
トランザクションが終了するまでテキスト値の読み取りをロックします。 他のユーザーは値を読み取ることができますが、変更はできません。
解説
有効な text_ptr 値を取得するには、TEXTPTR 関数を使用します。 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)」を参照してください。
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)