• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

风语者

风中我低语,愈远愈清晰
  • 博客园
  • 联系
  • 管理

公告

View Post

text、ntext 和 image (整理)

  ◆ 它们是MSSQL中用于存储大型非 Unicode 字符(text)、Unicode 字符(ntext)及二进制数据(image)的固定长度和可变长度数据类型,最大可达 2 GB。
  ◆用户可以在表上启用 text in row 选项,以使该表能够在其数据行中存储 text、ntext 或 image 数据。默认情况下text、ntext 或 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 语句返回的 text 或 image 数据的最大长度,以字节为单位。

下例显示如何在不使用 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 读取 text、ntext 或 image 列中的 text、ntext 或 image 值,从指定的偏移量开始读取指定的字节数。语法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 允许对现有的 text、ntext 或 image 列进行无日志记录的交互式更新。该语句将彻底重写受其影响的列中的任何现有数据。WRITETEXT 语句不能用在视图中的 text、ntext 和 image 列上。语法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 更新现有 text、ntext 或 image 字段。使用 UPDATETEXT 在适当的位置更改 text、ntext 或 image 列的一部分。
语法

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

   

posted on 2005-02-23 15:54  风语者  阅读(1362)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3