READTEXT (Transact-SQL)

从 text、ntext 或 image 列读取 text、ntext 或 image 值,从指定的偏移量开始读取指定的字节数。

重要说明重要提示

后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。请改用 SUBSTRING 函数。

主题链接图标Transact-SQL 语法约定

语法

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 示例数据库。有关如何安装 pubs 示例数据库的信息,请参阅下载 Northwind 和 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