以 varbinary 格式返回對(duì)應(yīng)于 text、ntext 或 image 列的文本指針值。檢索到的文本指針值可用于 READTEXT、WRITETEXT 和 UPDATETEXT 語(yǔ)句。
TEXTPTR ( column )
column
待使用的 text、ntext 或 image 列。
varbinary
在 Microsoft SQL Server™ 2000 中,對(duì)于帶行內(nèi)文本的表,TEXTPTR 為要處理的文本返回一個(gè)句柄。即使文本值為空,用戶仍能獲得有效的文本指針。
如果表不帶行內(nèi)文本,并且 text、ntext 或 image 列還未由 UPDATETEXT 語(yǔ)句初始化,則 TEXTPTR 將返回空指針。
可使用 TEXTVALID 來(lái)檢查文本指針是否存在。在無(wú)有效文本指針時(shí),不能使用 UPDATETEXT、WRITETEXT 或 READTEXT。
下列函數(shù)和語(yǔ)句對(duì) text、ntext 和 image 數(shù)據(jù)同樣有用。
函數(shù)或語(yǔ)句 | 描述 |
---|---|
PATINDEX('%pattern%', expression) | 返回給定字符串在 text 或 ntext 列中的字符位置。 |
DATALENGTH(expression) | 返回 text、ntext 和 image 列的數(shù)據(jù)長(zhǎng)度。 |
SET TEXTSIZE | 返回可用 SELECT 語(yǔ)句返回的 text、ntext 或 image 數(shù)據(jù)的極限大?。ㄒ宰止?jié)為單位)。 |
SUBSTRING(text_column, start, length) | 返回由給定 start 偏移量和 length 所指定的 varchar 字符串。此長(zhǎng)度應(yīng)小于 8 KB。 |
下例使用 TEXTPTR 函數(shù)在 pubs 數(shù)據(jù)庫(kù)的 pub_info 表中查找與 New Moon Books 相關(guān)聯(lián)的 image 列 logo。文本指針?lè)胖迷诰植孔兞?@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
在 SQL Server 2000 中,行內(nèi)文本指針必須在事務(wù)內(nèi)部使用。示例如下:
CREATE TABLE t1 (c1 int, c2 text)
EXEC sp_tableoption 't1', 'text in row', 'on'INSERT t1 VALUES ('1', 'This is text.')
GOBEGIN TRAN
DECLARE @ptrval VARBINARY(16)
SELECT @ptrval = TEXTPTR(c2)
FROM t1
WHERE c1 = 1
READTEXT t1.c2 @ptrval 0 1
COMMIT
下例從 pub_info 表中選擇 pub_id 列和 pr_info 列的 16 字節(jié)文本指針。
USE pubs
GO
SELECT pub_id, TEXTPTR(pr_info)
FROM pub_info
ORDER BY pub_id
GO
下面是結(jié)果集:
pub_id
------ ----------------------------------
0736 0x6c0000000000feffb801000001000100
0877 0x6d0000000000feffb801000001000300
1389 0x6e0000000000feffb801000001000500
1622 0x700000000000feffb801000001000900
1756 0x710000000000feffb801000001000b00
9901 0x720000000000feffb801000001000d00
9952 0x6f0000000000feffb801000001000700
9999 0x730000000000feffb801000001000f00
(8 row(s) affected)
下例顯示如何在不使用 TEXTPTR 的情況下返回文本的前 8,000 個(gè)字節(jié)。
USE pubs
GO
SET TEXTSIZE 8000
SELECT pub_id, pr_info
FROM pub_info
ORDER BY pub_id
GO
下面是結(jié)果集:
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)
下例在 pubs 數(shù)據(jù)庫(kù)的 pub_info 表中查找與 pub_id 0736 相關(guān)聯(lián)的 text 列 (pr_info)。下例首先聲明一個(gè)局部變量 @val。然后將文本指針(長(zhǎng)二進(jìn)制字符串)置于 @val 中,并將其作為參數(shù)提供給 READTEXT 語(yǔ)句,該語(yǔ)句將返回從第五個(gè)字節(jié)(偏移量為 4)開始的 10 個(gè)字節(jié)。
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
下面是結(jié)果集:
(1 row(s) affected)
pr_info
------------------------------------------------------------------------
is sample
相關(guān)文章