◆ 它们是MSSQL中用于存储大型非 Unicode 字符(text)、Unicode 字符(ntext)及二进制数据(image)的固定长度和可变长度数据类型,最大可达 2 GB。
  ◆用户可以在表上启用 text in row 选项,以使该表能够在其数据行中存储 textntext image 数据。默认情况下textntext image 字符串将存储在数据行外;只有这些字符串的文本指针驻留在数据行中,文本指针类型为 varbinary(16),使用 TEXTPTR ( column ),返回文本指针。

下例从 pub_info 表中选择 pub_id 列和 pr_info(text类型) 列的 16 字节文本指针。

USE pubs

GO

SELECT pub_id, TEXTPTR(pr_info)
FROM pub_info
ORDER BY pub_id
GO
◆ @@TEXTSIZE 指定 SELECT 语句返回的 textimage 数据的最大长度,以字节为单位。

下例显示如何在不使用 TEXTPTR 的情况下返回文本的前 8,000 个字节,pr_info是text类型

USE pubs

GO
SET TEXTSIZE 8000
SELECT pub_id, pr_info
FROM pub_info
ORDER BY pub_id
GO

◆READTEXT 读取 textntextimage 列中的 textntextimage 值,从指定的偏移量开始读取指定的字节数。语法READTEXT { table.column text_ptr offset size } [ HOLDLOCK ]

下例读取 pub_info 表中 pr_info(text类型) 列的第 2 个至第 26 个字符。

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
◆WRITETEXT 允许对现有的 textntextimage 列进行无日志记录的交互式更新。该语句将彻底重写受其影响的列中的任何现有数据。WRITETEXT 语句不能用在视图中的 textntextimage 列上。语法WRITETEXT { table.column text_ptr }  [ WITH LOG ] { data }

下例将文本指针放到局部变量 @ptrval 中,然后 WRITETEXT 将新的文本字符串放到 @ptrval 所指向的行中。

USE pubs

GO
EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'true'
GO
DECLARE @ptrval binary(16)
SELECT @ptrval = TEXTPTR(pr_info)
FROM pub_info pr, publishers p
WHERE p.pub_id = pr.pub_id
AND p.pub_name = 'New Moon Books'
WRITETEXT pub_info.pr_info @ptrval '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!'
GO
EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'false'
GO
◆UPDATETEXT 更新现有 textntextimage 字段。使用 UPDATETEXT 在适当的位置更改 textntextimage 列的一部分。
语法

UPDATETEXT { table_name.dest_column_name dest_text_ptr }
    
{ NULL | insert_offset }
    { NULL | delete_length }
    [ WITH LOG ]
    [ inserted_data
        | { table_name.src_column_name src_text_ptr } ]

本示例把文本指针置于局部变量 @ptrval 中,然后使用 UPDATETEXT 更新拼写错误。

USE pubs

GO
EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'true'
GO
DECLARE @ptrval binary(16)
SELECT @ptrval = TEXTPTR(pr_info)
FROM pub_info pr, publishers p
WHERE p.pub_id = pr.pub_id
AND p.pub_name = 'New Moon Books'
UPDATETEXT pub_info.pr_info @ptrval 88 1 'b'
GO
EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'false'
GO

   

相关文章:

  • 2021-11-14
  • 2021-07-14
  • 2022-12-23
  • 2021-06-26
  • 2021-08-21
猜你喜欢
  • 2021-08-28
  • 2021-07-16
  • 2022-12-23
  • 2022-01-10
  • 2021-11-25
  • 2022-12-23
  • 2021-10-05
相关资源
相似解决方案