MSSQL批量替换Text字符串

字符串

但是目前有许多现存系统仍然存在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+'%',[info]) from T where id=@ID
    while @Position>0
    begin
        set @Position=@Position-1
        updatetext T.[info] @ptr @Position @len @strdsc
      select @Position=patindex('%'+@strsrc+'%',[info]) from T where id=@ID
    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都好,一样均可通用

 

时间: 2024-08-31 06:01:38

MSSQL批量替换Text字符串的相关文章

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

方法一:(这种是最常用的,因为很多大段的内容都使用text ntext等数据类型,而我们通常也是替换里面的内容) varchar和nvarchar类型是支持replace,所以如果你的text不超过8000可以先转换成前面两种类型再使用replace 替换 text ntext 数据类型字段的语句 复制代码 代码如下:update 表名 set 字段名=replace(cast(与前面一样的字段名 as varchar(8000)) ,'原本内容','想要替换成什么') 方法二:(替换其他数据类

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

方法一:(这种是最常用的,因为很多大段的内容都使用text ntext等数据类型,而我们通常也是替换里面的内容) varchar和nvarchar类型是支持replace,所以如果你的text不超过8000可以先转换成前面两种类型再使用replace 替换 text ntext 数据类型字段的语句 复制代码 代码如下: update 表名 set 字段名=replace(cast(与前面一样的字段名 as varchar(8000)) ,'原本内容','想要替换成什么') 方法二:(替换其他数据

dedecms SQL命令运行器批量替换指定字符串例子

查询指定 archives 表 select * from 你的表前缀_archives limit 1 这个表是主表了,我们查询一条出来看看,结果如下 运行SQL:select * from 你的表前缀_archives where id =1466,共有1条记录,最大返回100条! 记录:1 id:1466 typeid:110 typeid2:0 sortrank:1238913636 flag:c,p ismake:1 channel:1 arcrank:0 click:33119 mo

access mssql 批量替换数据库指定内容代码(1/3)

通过Access数据库教程中的查询分析器来修改(这里我使用的是Access 2003) 1.打开需要修改的Access数据库 2.在数据库"对象"中点击"查询" 3.点击"在设计视图中创建查询" 4.在出现的界面中关闭"显示表"小窗口 5.点击"视图"菜单,选择"SQL视图",此时将出现查询窗口,您可以在此输入SQL语句了 6.直接输入以下SQL语句: Update 表 SET 字段=r

使用SQL批量替换语句修改、增加、删除字段内容_MsSql

sql替换语句,用该命令可以整批替换某字段的内容,也可以批量在原字段内容上加上或去掉字符. 命令总解:update 表的名称 set 此表要替换的字段名=REPLACE(此表要替换的字段名, '原来内容', '新内容') 如 UPDATE Whir_ProductRelese SET ReleseName=REPLACE(ReleseName,'http://www.maidq.com','http://maidq.com') 举例说明: 1)把backupfile表里url的字段内容里为htt

sql update批量替换指定字符笔记

最简单的替换直接把一个字段的0状态改成1,例子  代码如下 复制代码 update  `表名A` set is_checked=1 WHERE cityid=93 影响列数: 214 (查询花费 0.0833 秒) 替换了214条记录了,我们只使用了最简单的update set命令了,这样就成功批量更新了一指数据了,那么我们发现有些字符串中只有几个字符有问题要怎么替换?  代码如下 复制代码 update 表名  set  `字段`=replace(字段, '替换的内容', '') WHERE

指令-linux 批量替换带有空格的字符串

问题描述 linux 批量替换带有空格的字符串 将多个文件中的 //#define LOG 0 批量替换成 #define LOG 0 求linux指令,或者是一个脚本 重复写一遍: 将多个文件中的 //#define LOG 0 批量替换成 #define LOG 0 求linux指令,或者是一个脚本 解决方案 替换a.txt中的 sed -i "s@//#define LOG 0@#define LOG 0@" a.txt 解决方案二: 直接字符串匹配 用python的string

sqlserver replace函数 批量替换数据库中指定字段内指定字符串参考方法

语法 REPLACE ( 'string_e­xpression1' , 'string_e­xpression2' , 'string_e­xpression3' ) 参数说明 'string_e­xpression1' 待搜索的字符串表达式.string_e­xpression1 可以是字符数据或二进制数据. 'string_e­xpression2' 待查找的字符串表达式.string_e­xpression2 可以是字符数据或二进制数据. 'string_e­xpression3' 替换

存储过程替换text,ntext列中的字符串

存储过程|字符串 /*author:amjndate:2003-03-28version:1.0function:替换text,ntext列中的字符串(不支持中文)*/declare @ptr varbinary(16)declare @amjnId intdeclare @Position int,@len intset @len=datalength('ILOVEHJL') declare wux_Cursor scroll Cursorfor select textptr([Name]),