SQL Server中TEXT类型字段值在数据库中追加字符串方法

对text类型字段值进行追加更新的操作,一开始用了简单的update语句试了试,有错误,原来text、ntext类型的字段不能和 varchar类型进行add(+)运算,找了半天资料,查了一下帮助文档,终于找到了如何解决的方法了。

表:

CREATE TABLE [dbo].[test] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[mytext] [text] COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

数据:

id      mytext

1       aaaa

在TEXT类型中追加字符串:

DECLARE @ptrval binary(16)
SELECT @ptrval = TEXTPTR(mytext) from test
UPDATETEXT test.mytext @ptrval null 0 'bbbb'

运行结果:

id      mytext

1       aaaabbbb

追加成功,这个是在数据库中完成的,操作TEXT类型字段的和操作普通其它字符串类型字段是不一样的,这里需要用updatetext语句才行。

下面是updatetext的帮助说明:

UPDATETEXT
更新现有 text、ntext 或 image 字段。使用 UPDATETEXT 在适当的位置更改 text、ntext 或 image 列的一部分。使用 WRITETEXT 来更新和替换整个 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 } ]

参数
table_name.dest_column_name

要更新的表和 text、ntext 或 image 列的名称。表名和列名必须符合标识符的规则。有关更多信息,请参见使用标识符。指定数据库名和所有者名是可选的。

dest_text_ptr

指向要更新的 text、ntext 或 image 数据的文本指针的值(由 TEXTPTR 函数返回)。dest_text_ptr 必须为 binary(16)。

insert_offset

以零为基的更新起始位置。对于 text 或 image 列,insert_offset 是在插入新数据前从现有列的起点开始要跳过的字节数对于 ntext 列,insert_offset 是字符个数(每个 ntext 字符占用 2 个字节)。开始于这个以零为基的起始点的现有 text、ntext 或 image 数据向右移,为新数据腾出空间。值为 0 表示将新数据插入到现有位置的开始处。值为 NULL 则将新数据追加到现有数据值中。

delete_length

是从 insert_offset 位置开始的、要从现有 text、ntext 或 image 列中删除的数据长度。delete_length 值对于 text 和 image 列用字节指定,对于 ntext 列用字符指定。每个 ntext 字符占用 2 个字节。值为 0 表示不删除数据。值为 NULL 则删除现有 text 或 image 列中从 insert_offset 位置开始到末尾的所有数据。

WITH LOG

在 Microsoft® SQL Server™ 2000 中被忽略。在该版本中,日志记录由数据库的有效恢复模型决定。

inserted_data

是要插入到现有 text、ntext 或 image 列 insert_offset 位置的数据。这是单个 char、nchar、varchar、nvarchar、binary、varbinary、text、ntext 或 image 值。inserted_data 可以是文字或变量。

table_name.src_column_name

用作插入数据源的表或 text、ntext 或 image 列的名称。表名和列名必须符合标识符的规则。

src_text_ptr

指向作为插入数据源使用的 text、ntext 或 image 列的文本指针值(由 TEXTPTR 函数返回)。

注释
新插入的数据可以是单个 inserted_data 常量、表名、列名或文本指针。

Update 操作 UPDATETEXT 参数
替换现有数据 指定一个非空 insert_offset 值、非零 delete_length 值和要插入的新数据。
删除现有数据 指定一个非空 insert_offset 值、非零 delete_length 值。不指定要插入的新数据。
插入新数据 指定 insert_offset 值、为零的 delete_length 值和要插入的新数据。

在 SQL Server 2000 中,可能存在指向 text、ntext 或 image 数据的行内文本指针,但这些指针无效。有关 text in row 选项的信息,请参见 sp_tableoption。有关使文本指针无效的信息,请参见 sp_invalidate_textptr。

当兼容级别等于 65时,要将 text 列初始化为 NULL,请使用 UPDATETEXT。如果兼容级别等于 70,则使用 WRITETEXT 将 text 列初始化为 NULL;否则 UPDATETEXT 将 text 列初始化为空字符串。有关设置兼容级别的信息,请参见 sp_dbcmptlevel。

权限
UPDATETEXT 权限默认授予在指定表上具有 SELECT 权限的用户。这些权限可在传递 SELECT 权限时传递。

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

USE pubsGOEXEC sp_dboption 'pubs', 'select into/bulkcopy', 'true'GODECLARE @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' GOEXEC sp_dboption 'pubs', 'select into/bulkcopy', 'false'GO
0
顶一下

转载于:https://www.cnblogs.com/no7dw/archive/2009/12/10/1620762.html

SQL Server中TEXT类型操作相关推荐

  1. SQL Server中Text和varchar(max)数据类型区别

    SQL Server中Text和varchar(max)数据类型区别 以前只知道text和image是可能被SQL Server淘汰的数据类型,但具体原因不太清楚,今天读书的时候发现了text与var ...

  2. server sql 中类型为bit应该插入什么值_关于SQL Server中bit类型字段增删查改的一些事...

    前言 本文主要给大家介绍了关于SQL Server中bit类型字段增删查改的一些事,话说BIT类型字段之前,先看"诡异"的一幕,执行Update成功,但是查询出来的结果依然是1,而 ...

  3. oracle 图片 显示不出,Sql Server 中image类型迁移到Oracle 中Blob类型出现图片显示不出来,why????请博客们帮忙 | 学步园...

    我现在在一项目中碰到这么一个问题 Sql Server 中image类型迁移到Oracle Blob类型出现图片显示不出来,我在Sql Server 中看了一条image数据 如下: 1.Sql Se ...

  4. .SQL Server中 image类型数据的比较

    在SQL Server中如果你对text.ntext或者image数据类型的数据进行比较.将会提示:不能比较或排序 text.ntext 和 image 数据类型,除非使用 IS NULL 或 LIK ...

  5. SQL server中DateTime类型字段如何赋值零?

    .net 1.1 不支持Sql Server  datetime字段为空的情况 .net 2.0  开始支持Sql Server datetime字段为空 在不支持datetime为空的情况下, Sq ...

  6. Sql server中的Text数据类型

    在什么情况下应用这个类型 [quote] 超过 8KB 的ASCII 数据可以使用Text数据类型存储.例如,因为 Html 文档全部都是 ASCII 字符,并且在一般情况下长度超过 8KB,所以这些 ...

  7. C# 学习笔记(18)操作SQL Server 中

    C# 学习笔记(18)操作SQL Server 中 数据库基础操作 SQL语法可以参考 菜鸟教程 或者微软官方的SQL示例 注意SQL不区分大小写 查 1.基础查询 --最基础的查询语句, selec ...

  8. sql crud_SQL Server中的CRUD操作

    sql crud CRUD operations are foundation operations every database developer and administrator needs ...

  9. 在SQL Server中读取事务日志-从黑客到解决方案

    The SQL Server transaction log is akin to a 'Black box' in an airliner. It contains all of the recor ...

最新文章

  1. linux下配置ip地址的方法
  2. tf.keras.losses.MeanAbsoluteError 损失函数 示例
  3. Blazor将.NET带回到浏览器
  4. 35个设计一流的美味的水果壁纸欣赏
  5. 网站优化常见的五个易错点!
  6. WPF and Silverlight 学习笔记(十八):WPF样式(Style)与模板(Template)
  7. php制作标签,ThinkPHP标签制作教程
  8. improve怎么加ing_英语当中的ing
  9. CPU 的 ring0、ring1、ring2、ring3
  10. signature=ec663bb1ca3cfa2e278da44aa044d1c6,Fair Exchange of Signatures with Multiple Signers
  11. 如何管理QQ浏览器的扩展工具 QQ浏览器扩展工具的管理方法
  12. Ext3 -- Form 实例。 用来migrate file 数据到DB用的
  13. 中南林科大c语言程序设计,2017年中南林业科技大学计算机与信息工程学院802C语言与数据结构之C程序设计考研强化模拟题...
  14. Ubuntu Desktop 变为 Ubuntu Server 服务器版的方法
  15. K3 WISE 开发插件《SQL语句WHERE查询-范围查询/模糊查询》
  16. oracle客户端添加sqlldr
  17. stm32实现红外自发自收
  18. 删除Directory Opus后从快捷方式无法转到文件夹
  19. 谷歌账户跑着跑着没点击了,跑不出去什么原因。
  20. android波纹动画,Android实现水波纹特效

热门文章

  1. readyboost提升明显吗_主动降噪影响音质吗?为什么降噪耳机打开降噪后音质会有明显提升...
  2. tab 切换显示网页链接的标签_chromium如何管理Tab
  3. Java中print、printf、println的区别(对原文进行缩减,截取对自己有用的)
  4. quartus生成qdb文件_(原创)详解Quartus导出网表文件:.qxp和.vqm
  5. Python Debug调试技巧
  6. 佳士得于5月19日至27日以NFT形式拍卖安迪·沃霍尔作品
  7. 摩根溪创始人:Coinbase应该购买纽约证券交易所
  8. SAP License:工作中的怪现象
  9. Mongoose的链接和model优化
  10. 一文读懂-Impala