`
pavel
  • 浏览: 915273 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

替换text字段的储存过程

阅读更多

ntext, text, and image data types will be removed in a future version of MicrosoftSQL Server. Avoid using these data types in new development work, and plan to modify applications that currently use them. Use nvarchar(max), varchar(max), and varbinary(max) instead
  从上文可以看到text,ntext等类型将会被ms sqlserver抛弃,取而代之的是varchar(max)等.
  预计也将会取消专门针对text等类型的操作函数,例如textptr,updatetext等。
  但是目前有许多现存系统仍然存在text类型的字段,因为种种原因已经不能修改数据库结构。
  但是我们可以在新写的sql语句及存储过程中采用新的方法,以备将来mssql server抛弃专门针对text等类型的操作函数后修改程序的麻烦。
  下面是一个简单的替换例子,
  针对text类型的字符串替换:
  设有表 T(id int not null,info text)
  要求替换info中的'abc'为'123'
  一般的存储过程会写成:
  drop procedure dbo.procedure_1
  go
  set ANSI_NULLS ON
  set QUOTED_IDENTIFIER ON
  go
  create procedure dbo.procedure_1
  as
  declare @ptr varbinary(16)
  declare @ID int
  declare @Position int,@len int
  declare @strsrc char(3)
  declare @strdsc char(3)
  set @strtmp='abc'
  set @strdsc='123'
  set @len=3
  declare replace_Cursor scroll Cursor
  for
  select textptr([info]),id from T
  for read only
  open replace_Cursor
  fetch next from replace_Cursor into @ptr,@ID
  while @@fetch_status=0
  begin
   select @Position=patindex(
'%'+@strsrc+'%',
   while @Position>0
   begin
   set @Position=@Position-1
   updatetext T.[info] @ptr @Position @len @strdsc
   select @Position=patindex(
'%'+@strsrc+'%',
   end
   fetch next from replace_Cursor into @ptr,@ID
  end
  close replace_Cursor
  deallocate replace_Cursor
  go
  其中用到了text专用的函数 updatetext
  现在我们改写成
  drop procedure dbo.procedure_1
  go
  set ANSI_NULLS ON
  set QUOTED_IDENTIFIER ON
  go
  create procedure dbo.procedure_1
  as
  declare @ID int
  declare @strtmp varchar(max)
  declare @strsrc char(3),@strdsc char(3)
  set @strsrc = 'abc'
  set @strdsc = '123'
  declare replace_Cursor scroll Cursor
  for
  select id from testtable
  --for read only
  open replace_Cursor
  fetch next from replace_Cursor into @ID
  while @@fetch_status=0
  begin
   select @strtmp = [info] from testtable where
id=@ID
   select @strtmp = Replace(@strtmp,@strsrc,@strdsc)
   update T set [info] = @strtmp where
id=@ID
   fetch next from replace_Cursor into @ID
  end
  close replace_Cursor
  deallocate replace_Cursor
  go
  这样,无论info字段改成char,nchar,text都好,一样均可通用

分享到:
评论

相关推荐

    sqlserver 中ntext字段的批量替换(updatetext的用法)

    二、问题解决 整理通用存储过程,代码如下: 代码如下: CREATE procedure [dbo].[Proc_UpdateNTextField] @TargetTable nvarchar(1000), –目标表名 @TargetField nvarchar(1000), –目标字段名 @

    DynamicFields:PHP类可隐藏表单中的真实表单字段名称

    一个用PHP编写的小类,可以通过用一些随机字符串替换它来帮助您隐藏表单的真实字段名称。 它使用会话存储密钥和时间 这不需要额外的配置,您只需要在脚本中包含此文件,然后将所需的表单名称传递给函数即可,如下例...

    orcale常用命令

    8、存储函数和过程 查看函数和过程的状态 SQL>select object_name,status from user_objects where object_type='FUNCTION'; SQL>select object_name,status from user_objects where object_type='PROCEDURE';...

    精通sql结构化查询语句

    以SQL Server为工具,讲解SQL语言的应用,提供了近500个曲型应用,读者可以随查随用,深入讲解SQL语言的各种查询语句,详细介绍数据库设计及管理,详细讲解存储过程、解发器和游标等知识,讲解了SQL语言在高级语言中...

    Access数据库通用管理系统 9.3

    可比较两个表的结构属性及记录异同情况,也可比较同一表中两个字段的异同情况,并存储比较结果。  六、记录合并功能。可将数据表中某列(关键字段)具有相同值的所有记录数据进行合并。 七、记录连接功能。可...

    PTSJ通用数据库管理系统9.3

    可比较两个表的结构属性及记录异同情况,也可比较同一表中两个字段的异同情况,并存储比较结果。  六、记录合并功能。可将数据表中某列(关键字段)具有相同值的所有记录数据进行合并。 七、记录连接功能。可将两个表...

    Python 豆瓣爬取电影短评(最多爬取500多条短评)字段:评价等级、用户来自地区、评论时间、短评内容

    注意:需要设置cookie,并且替换网址(自己要爬的) 导入模块:代码开始部分导入了多个Python模块,包括正则表达式、CSV文件处理、时间处理、请求处理、网页解析、词云生成、数据可视化等模块。 登录Cookie和反爬虫:...

    最全的oracle常用命令大全.txt

    8、存储函数和过程 查看函数和过程的状态 SQL>select object_name,status from user_objects where object_type='FUNCTION'; SQL>select object_name,status from user_objects where object_type='PROCEDURE';...

    mygeneration代码生成工具

    使用MyGeneration 可以为Gentle.NET, Opf3, NHibernate等生成ORM架构或ORM文件,为多种数据库生成存储过程,为.Net项目生成C#、VB.NET 程序代码,PHP、HTML等页面代码。 MyGeneration 具有以下的特性: 1.支持多种...

    degoogler:Lints 从 Google 电子表格的多个单元格复制的 JSON 对象

    去谷歌者整理从 Google 电子表格的多个单元格复制的 ... 添加存储库:在 Sublime 中,按 Cmd+Shift+P 并开始在输入字段中输入,以便包控制:添加存储库出现。 按 Enter,然后将https://github.com/Percipient24/degoo

    数据库管理工具 SQLyog Ultimate 13.1.1.0 + x64 中文多语免费版.zip

    可以连接到指定的MYSQL主机,支持使用HTTP管道以及/SSH/SSL,可创建新的表、视图、存储过程、函数、触发器及事件,支持删除及截位数据库。支持转储数据库,将数据库保存到 SQL,编辑功能可以查找/替换指定内容,可列...

    Oracle事例

    多个字段时,在最后加上 Foreign Key (字段名) REFERENCE 表名(字段) 连带删除选项 (on delete cascade 当指定时,如果父表中的记录被删除,则依赖于父表的记录也被删除 REFERENCE 表名() on delete cascade; 7...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    在数据库处理方面,不需要在数据层借助存储过程及数据库服务器端函数封装过多的业务逻辑,因此数据库系统采用相对精巧的MySQL[6]。 该在线博客系统服务器端如果需要布置到其他主机上,则该主机必备条件如下: 1. ...

    sql2005全文检索.doc

     第三步,开发存储过程并把结果集分页,以供前台页面调用返回查询的结果。  1) 建立找资本全文检索储存过程USP_CaptialInfo_FullIndex。 /* 找资本全文索引开发过程  */ CREATE PROCEDURE USP_CaptialInfo_Full...

    MySQL5.1参考手册官方简体中文版

    8.14. replace:字符串替换实用工具 8.15. mysql_zap:杀死符合某一模式的进程 9. 语言结构 9.1. 文字值 9.1.1. 字符串 9.1.2. 数值 9.1.3. 十六进制值 9.1.4. 布尔值 9.1.5. 位字段值 9.1.6. NULL值 9.2. 数据库、...

    MySQL 5.1官方简体中文参考手册

    8.14. replace:字符串替换实用工具 8.15. mysql_zap:杀死符合某一模式的进程 9. 语言结构 9.1. 文字值 9.1.1. 字符串 9.1.2. 数值 http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chapter/(第 8/24 页)2006-11...

    MySQL 5.1中文手冊

    8.14. replace:字符串替换实用工具 8.15. mysql_zap:杀死符合某一模式的进程 9. 语言结构 9.1. 文字值 9.1.1. 字符串 9.1.2. 数值 9.1.3. 十六进制值 9.1.4. 布尔值 9.1.5. 位字段值 9.1.6. NULL值 9.2. 数据库、...

    MySQL 5.1参考手册 (中文版)

    8.14. replace:字符串替换实用工具 8.15. mysql_zap:杀死符合某一模式的进程 9. 语言结构 9.1. 文字值 9.1.1. 字符串 9.1.2. 数值 9.1.3. 十六进制值 9.1.4. 布尔值 9.1.5. 位字段值 9.1.6. NULL值 9.2. 数据库、...

    mysql官方中文参考手册

    8.14. replace:字符串替换实用工具 8.15. mysql_zap:杀死符合某一模式的进程 9. 语言结构 9.1. 文字值 9.1.1. 字符串 9.1.2. 数值 9.1.3. 十六进制值 9.1.4. 布尔值 9.1.5. 位字段值 9.1.6. NULL值 9.2. 数据库、...

    MYSQL中文手册

    8.14. replace:字符串替换实用工具 8.15. mysql_zap:杀死符合某一模式的进程 9. 语言结构 9.1. 文字值 9.1.1. 字符串 9.1.2. 数值 9.1.3. 十六进制值 9.1.4. 布尔值 9.1.5. 位字段值 9.1.6. NULL值 9.2....

Global site tag (gtag.js) - Google Analytics