READTEXT (Transact-SQL)
从 text、ntext 或 image 列读取 text、ntext 或 image 值,从指定的偏移量开始读取指定的字节数。
重要提示 |
---|
后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。请改用 SUBSTRING 函数。 |
适用范围:SQL Server(SQL Server 2008 到当前版本)。 |
语法
READTEXT { table.column text_ptr offset size } [ HOLDLOCK ]
参数
table . column
要对其执行读取操作的表和列的名称。 表和列的名称必须符合标识符规则。 必须指定表名和列名。但是,可根据需要指定数据库名称和数据库所有者名称。text_ptr
有效的文本指针。 text_ptr 必须为 binary(16)。offset
开始读取 text、image 或 ntext 数据之前,要跳过的字节数(使用 text 或 image 数据类型时)或字符数(使用 ntext 数据类型时)。size
要读取的字节数(使用 text 或 image 数据类型时)或字符数(使用 ntext 数据类型时)。 如果 size 为 0,则读取 4 KB 数据。HOLDLOCK
使文本值被锁定以进行读取,直到事务结束为止。 其他用户可读取该值,但不能对其进行修改。
注释
使用 TEXTPTR 函数可获得有效的 text_ptr 值。 TEXTPTR 返回指向指定行中的 text、ntext 或 image 列的指针。如果返回了多行,则为指向返回的最后一行中的 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)。
如果 @@TEXTSIZE 函数的值小于为 READTEXT 指定的大小,则该值将替代为 READTEXT 指定的大小。 @@TEXTSIZE 函数指定对 SET TEXTSIZE 语句设置的返回数据的字节数的限制。 有关为 TEXTSIZE 设置会话设置的详细信息,请参阅 SET TEXTSIZE (Transact-SQL)。
权限
READTEXT 权限默认授予对指定的表具有 SELECT 权限的用户。 可在转移 SELECT 权限时转移权限。
示例
以下示例读取 pub_info 表中 pr_info 列的第 2 个至第 26 个字符。
备注
若要运行此示例,必须安装 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