SQL Server中的TextPtr函数

以 varbinary 格式返回对应于 text、ntext 或 image 列的文本指针值。检索到的文本指针值可用于 READTEXT、WRITETEXT 和 UPDATETEXT 语句。

语法
TEXTPTR ( column )

参数
column

待使用的 text、ntext 或 image 列。

返回类型
varbinary

注释
在 Microsoft SQL Server™ 2000 中,对于带行内文本的表,TEXTPTR 为要处理的文本返回一个句柄。即使文本值为空,用户仍能获得有效的文本指针。

如果表不带行内文本,并且 text、ntext 或 image 列还未由 UPDATETEXT 语句初始化,则 TEXTPTR 将返回空指针。

可使用 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。
 

 

示例
A. 使用 TEXTPTR
下例使用 TEXTPTR 函数在 pubs 数据库的 pub_info 表中查找与 New Moon Books 相关联的 image 列 logo。文本指针放置在局部变量 @ptrval 中。

USE pubsGODECLARE @ptrval varbinary(16)SELECT @ptrval = TEXTPTR(logo) FROM pub_info pr, publishers pWHERE p.pub_id = pr.pub_id    AND p.pub_name = 'New Moon Books'GOB. 使用带行内文本的 TEXTPTR
在 SQL Server 2000 中,行内文本指针必须在事务内部使用。示例如下:

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 1COMMITC. 返回文本数据
下例从 pub_info 表中选择 pub_id 列和 pr_info 列的 16 字节文本指针。

USE pubsGOSELECT pub_id, TEXTPTR(pr_info)FROM pub_infoORDER BY pub_idGO下面是结果集:

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 个字节。

USE pubsGOSET TEXTSIZE 8000SELECT pub_id, pr_infoFROM pub_infoORDER BY pub_idGO下面是结果集:

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 语句,该语句将返回从第五个字节(偏移量为 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

 

下面是结果集:

(1 row(s) affected)

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Hello_World_wusu/archive/2009/10/14/4667277.aspx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值