`
pavel
  • 浏览: 928190 次
  • 性别: 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都好,一样均可通用

分享到:
评论

相关推荐

    数据库替换text字段

    3. **批量处理**:如果需要替换的是全局性的文本模式,考虑编写存储过程或触发器,实现自动化和批量处理。 4. **字符编码**:确保所有操作都在正确的字符集下进行,避免因编码问题导致的替换错误。 通过以上详细...

    sql server替换textntext类型字段的值

    因为 text/ntext 类型字段的存储方式与其他数据类型不同,它们需要使用特殊的处理方式来进行值的替换。 在 SQL Server 中,text/ntext 类型字段的存储方式是基于指针的,每个文本字段都对应一个指针,指向文本数据...

    INFA技术超群_中文KB_00029_TDM_Mysql中Longtext字段处理方式

    每个Longtext字段可以存储最多4GB的数据,非常适合存储大段的文章、报告或其他非结构化文本数据。Longtext字段的应用场景非常广泛,如文档管理、博客平台等。 #### 知识点四:Longtext字段处理方式 1. **读取与...

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

    为了解决上述问题,可以创建一个通用的存储过程`[dbo].[Proc_UpdateNTextField]`,这个存储过程使用`updatetext`来逐个替换`ntext`字段中的特定字符串。存储过程的参数包括目标表名、目标字段名、主键字段名以及需要...

    查看存储过程执行情况

    根据给定的信息,本文将详细解释如何通过执行特定SQL查询来查看存储过程的执行情况,以及如何通过查询数据库的不同视图来获取与IO操作相关的详细信息。这些信息对于监控数据库性能、诊断问题以及优化存储过程至关...

    mssql查找备注(text,ntext)类型字段为空的方法

    在SQL Server中,`text`和`ntext`数据类型是用来存储大文本数据的,它们与常规的字符串数据类型如`varchar`或`nvarchar`有所不同。当你试图像处理普通字符字段那样直接用`=`操作符来检查`text`或`ntext`字段是否为空...

    除MSSQL数据库text字段中恶意脚本的删方法

    因此,我们必须采用其他方法来替换text字段中的特定字符串。 这里提供了一种使用`PATINDEX`函数的解决方案。`PATINDEX`函数可以用来查找特定模式在文本列中的位置,这对于我们的目的非常有用。以下是一个具体的步骤...

    MSSQL批量替换语句 在SQL SERVER中批量替换字符串的方法

    对于text和ntext类型的字段,需要使用cast函数将其转换为varchar或nvarchar类型,然后再使用replace函数来实现批量替换。例如: update 表名 set 字段名=replace(cast(字段名 as varchar(8000)),'原本内容','想要...

    VB access 增加字段

    Access数据库是一种关系型数据库管理系统,提供了一种存储和管理数据的有效方式。当我们需要在已有的Access数据库表中增加新的字段(列)时,VB可以提供编程接口来实现这一功能。以下将详细介绍如何使用VB来增加...

    sql server中的image类型的数据导出到oracle的clob字段中

    CLOB 字段可以存储大量的 Unicode 字符串数据,并提供了高效的读写机制。 将 Image 类型数据导出到 Oracle 的 CLOB 字段中 为了将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中,我们需要使用Java...

    存储过程生成器所需Sql语言

    这个存储过程将返回指定表的所有主键字段及其相关信息。 对于获取表的字段、字段类型、长度等信息,还可以使用以下查询: ```sql SELECT 表名 = CASE WHEN a.colorder = 1 THEN d.name ELSE '' END, 表说明 = ...

    ecshop 给商品增加新字段

    在ECSHOP的二次开发过程中,为了满足特定业务需求,有时我们需要为商品添加新的字段以存储额外的信息。本文将详细介绍如何在ECSHOP中为商品增加一个新字段,这里我们以添加名为`other_col`的字段为例。 首先,我们...

    数据库中的内容字段被挂马的替换方法 SQL注入

    这需要开发人员编写严谨的程序逻辑,并使用参数化查询或存储过程。 在ASP或PHP等Web开发环境中,有许多现成的数据库管理工具或内容管理系统(如dedecms)提供批量替换功能,可以在不直接操作数据库的情况下清除挂马...

    记事本查找与替换

    - `Form2.resx` 和 `Form3替换.resx`:这些是资源文件,存储了界面的本地化字符串和其他资源,可能包括查找和替换功能相关的按钮文本、提示信息等。 4. **实现细节**: - 在C#中,可以使用`System.Text.Regular...

    PostgreSQL存储过程用法实战详解

    例如,创建一个名为`f_getNewID`的存储过程,它接收两个参数:表名(myTableName)和字段名(myFeildName),返回该字段的最大值加1。初始的尝试可能会遇到错误,因为动态SQL的拼接方式不正确。原始代码如下: ```...

    Petapoco (SQLSERVERE) 增加表注释和字段注释

    这通常通过SQL查询实现,例如,使用`sp_columns`系统存储过程或者`syscomments`视图来获取元数据信息。在C#代码中执行这些查询,将注释信息存储在适当的数据结构中,如字典或自定义类。 接下来,我们需要在生成C#类...

Global site tag (gtag.js) - Google Analytics