READTEXT (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

textntextimage 列读取 textntextimage 值。 从指定的偏移量开始读取,并读取指定的字节数。

重要

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

Transact-SQL 语法约定

语法

READTEXT { table.column text_ptr offset size } [ HOLDLOCK ]  

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

参数

table.column
要对其执行读取操作的表和列的名称。 表名和列名必须符合标识符规则。 必须指定表名和列名。但是,可根据需要指定数据库名称和数据库所有者名称。

text_ptr
有效的文本指针。 text_ptr 必须是二进制 (16)。

offset
使用 textimage 数据类型时的字节数。 它还可以是使用 ntext 数据类型时,开始读取 textimagentext 数据之前要跳过的字符的字节数。

size 使用 textimage 数据类型时的字节数。 它还可以是将 ntext 数据类型用于待读取数据时的字符的字节数。 如果 size 为 0,则读取 4 KB 数据。

HOLDLOCK
使文本值被锁定以进行读取,直到事务结束为止。 其他用户可读取该值,但不能对其进行修改。

备注

使用 TEXTPTR 函数可获得有效的 text_ptr 值。 TEXTPTR 返回指向指定行中的 textntextimage 列的指针。 如果查询返回多行,则 TEXTPRT 还可以返回指向查询返回的最后一行中的 textntextimage 列的指针。 由于 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  

另请参阅

@@TEXTSIZE (Transact-SQL)
UPDATETEXT (Transact-SQL)
WRITETEXT (Transact-SQL)