TEXTPTR (Transact-SQL)
text、ntext、または image 列に対応するテキスト ポインタの値を varbinary 形式で返します。取得したテキスト ポインタの値は、READTEXT、WRITETEXT、および UPDATETEXT ステートメントで使用します。
重要 : |
---|
この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代替機能を使用することはできません。 |
構文
TEXTPTR ( column )
引数
column
使用される text、ntext、または image 列です。
戻り値の型
varbinary
解説
SQL Server 2005 では、行内テキストがあるテーブルの場合、TEXTPTR は、処理されるテキストのハンドルを返します。テキストの値が NULL である場合も、有効なテキスト ポインタを取得できます。
SQL Server 2005 では、ビューの列に対して TEXTPTR 関数を使用することはできません。テーブルの列に対してのみ使用できます。ビューの列に対して TEXTPTR 関数を使用するには、sp_dbcmptlevel を使用して互換性レベルを 80 に設定する必要があります。
テーブルに行内テキストがなく、text、ntext、または image 列が UPDATETEXT ステートメントで初期化されていない場合、TEXTPTR は NULL ポインタを返します。
テキスト ポインタが存在するかどうかをテストするには、TEXTVALID を使ってください。有効なテキスト ポインタがないと、UPDATETEXT、WRITETEXT、READTEXT は使用できません。
これらの関数とステートメントは、text、ntext、および image データを操作する場合にも役立ちます。
関数またはステートメント | 説明 |
---|---|
PATINDEX('%pattern%' , expression) |
text または ntext 列で指定された文字列の文字位置を返します。 |
DATALENGTH(expression) |
text、ntext、および image 列内のデータの長さを返します。 |
SET TEXTSIZE |
SELECT ステートメントで返される text、ntext、または image データの制限値をバイト単位で返します。 |
SUBSTRING(text_column, start, length) |
指定した start オフセットおよび length によって指定された varchar 文字列を返します。長さは 8 KB 未満で指定してください。 |
例
メモ : |
---|
次の例を実行するには、pubs データベースをインストールする必要があります。pubs データベースのインストール方法の詳細については、「Northwind サンプル データベースと pubs サンプル データベースのダウンロード」を参照してください。 |
A. TEXTPTR を使用する
次の例では、TEXTPTR
関数を使用して、pubs
データベースの pub_info
テーブル内の New Moon Books
に関連付けられている image 列 logo
を検索します。テキスト ポインタは、ローカル変数 @ptrval.
に格納されます。
USE pubs
GO
DECLARE @ptrval varbinary(16)
SELECT @ptrval = TEXTPTR(logo)
FROM pub_info pr, publishers p
WHERE p.pub_id = pr.pub_id
AND p.pub_name = 'New Moon Books'
GO
B. TEXTPTR を行内テキストと使用する
SQL Server では、行内テキスト ポインタは、次の例に示すように、トランザクション内で使用する必要があります。
CREATE TABLE t1 (c1 int, c2 text)
EXEC sp_tableoption 't1', 'text in row', 'on'
INSERT t1 VALUES ('1', 'This is text.')
GO
BEGIN TRAN
DECLARE @ptrval VARBINARY(16)
SELECT @ptrval = TEXTPTR(c2)
FROM t1
WHERE c1 = 1
READTEXT t1.c2 @ptrval 0 1
COMMIT
C. テキスト データを返す
次の例では、pub_info
テーブルから pub_id
列、および pr_info
列の 16 バイトのテキスト ポインタを選択します。
USE pubs
GO
SELECT pub_id, TEXTPTR(pr_info)
FROM pub_info
ORDER BY pub_id
GO
以下に結果セットを示します。
pub_id
------ ----------------------------------
0736 0x6c0000000000feffb801000001000100
0877 0x6d0000000000feffb801000001000300
1389 0x6e0000000000feffb801000001000500
1622 0x700000000000feffb801000001000900
1756 0x710000000000feffb801000001000b00
9901 0x720000000000feffb801000001000d00
9952 0x6f0000000000feffb801000001000700
9999 0x730000000000feffb801000001000f00
(8 row(s) affected)
次の例では、TEXTPTR を使用せずにテキストの最初の 8000
バイトを返す方法を示します。
USE pubs
GO
SET TEXTSIZE 8000
SELECT pub_id, pr_info
FROM pub_info
ORDER BY pub_id
GO
以下に結果セットを示します。
pub_id pr_info
------ -----------------------------------------------------------------
0736 New Moon Books (NMB) has just released another top ten publication. With the latest publication this makes NMB the hottest new publisher of the year!
0877 This is sample text data for Binnet & Hardley, publisher 0877 in the pubs database. Binnet & Hardley is located in Washington, D.C.
This is sample text data for Binnet & Hardley, publisher 0877 in the pubs database. Binnet & Hardley is located in Washi
1389 This is sample text data for Algodata Infosystems, publisher 1389 in the pubs database. Algodata Infosystems is located in Berkeley, California.
9999 This is sample text data for Lucerne Publishing, publisher 9999 in the pubs database. Lucerne publishing is located in Paris, France.
This is sample text data for Lucerne Publishing, publisher 9999 in the pubs database. Lucerne publishing is located in
(8 row(s) affected)
D. 特定のテキスト データを返す
次の例では、pubs
データベースの pub_info
テーブル内の pub_id``0736
に関連付けられた text
列 (pr_info
) を検索します。まず、ローカル変数 @val
が宣言されます。次に、テキスト ポインタ (長いバイナリ文字列) が @val
に挿入され、READTEXT
ステートメントにパラメータとして指定されます。これによって、5 番目のバイト (オフセットは 4) から開始して、10 バイトのデータが返されます。
USE pubs
GO
DECLARE @val varbinary(16)
SELECT @val = TEXTPTR(pr_info)
FROM pub_info
WHERE pub_id = '0736'
READTEXT pub_info.pr_info @val 4 10
GO
以下に結果セットを示します。
pr_info
-----------------------------------------------------------------------
is sample
(1 row(s) affected)
参照
関連項目
DATALENGTH (Transact-SQL)
PATINDEX (Transact-SQL)
READTEXT (Transact-SQL)
SET TEXTSIZE (Transact-SQL)
テキスト関数とイメージ関数 (Transact-SQL)
UPDATETEXT (Transact-SQL)
WRITETEXT (Transact-SQL)