当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 除MSSQL数据库text字段中恶意脚本的删方法

MSSQL
用Oracle和SQL Server数据库组合利弊分析
3个SQL视图搞定所有SqlServer数据库字典
使用SQL Server数据库的查询累计值
如何维护SQL Server的“交易日志”
SQL Server扩展存储过程实现远程备份与恢复
SQL Server 的存储过程
SQL Server 数据库嵌套子查询
如何使用SQL 事件探查器?
SQL Server 2008的新压缩特性
改进SQL Server数据库系统安全五步走
把SQL数据库部署到远程主机环境
SQL Server 2008综合数据可编程性
SQL Server 2005 数据维护实务
详细介绍微软SQL Server 2008
SQL Server数据库管理常用的SQL和T-SQL语句
从算法入手讲解SQL Server典例实现过程
ASP.NET连接Access和SQL Server数据库
SQL Server如何识别真实和自动创建的索引
SQL Server 2005数据转换服务的疑难解答
利用SQL Server 2005同义字缩短开发时间

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 139 ::
收藏到网摘: n/a

删除MSSQL数据库text字段的替换处理示例--全表替换,看到有人提问,所以整理了一个好久以前的处理方法,以供大家参考 方法很简单:text字段不能使用Replace,所以使用patindex
复制代码 代码如下:

-select * from Product where P_Intro like '%<script src="http://my.stsw518.cn/a002/1.js" src="http://my.stsw518.cn/a002/1.js"></script>%'
--text字段的替换处理示例--全表替换
-- select datalength(P_Intro),* from Product
--邀月 整理
--定义替换的字符串
declare @s_str nvarchar(4000),@d_str nvarchar(4000)
select @s_str='<script src="http://my.stsw518.cn/a002/1.js" src="http://my.stsw518.cn/a002/1.js"></script>' --要替换的字符串
,@d_str='' --替换成的字符串

--因为只能用patindex,所以对于搜索字符串做处理
set @s_str='%'+@s_str+'%'
--定义游标,循环处理数据
declare @id bigint
declare #tb cursor for select P_ID from Product where P_Intro like '%<script src="http://my.stsw518.cn/a002/1.js" src="http://my.stsw518.cn/a002/1.js"></script>%'
-- where P_ID=300727 ----where P_Intro like '%<script src="http://my.stsw518.cn/a002/1.js" src="http://my.stsw518.cn/a002/1.js"></script>%'
open #tb
fetch next from #tb into @id
while @@fetch_status=0
begin
--字符串替换处理
declare @p varbinary(16)
,@p1 int,@p2 int
,@rplen int,@step int,@len int
select @p=textptr(P_Intro)
,@rplen=len(@s_str)-2
,@step=len(@d_str)
,@p1=patindex(@s_str,P_Intro)
,@len=datalength(P_Intro)
,@p2=0
from Product
where P_id=@id
while @p1>0
begin
set @p2=@p1+@p2-1
updatetext Product.P_Intro @p @p2 @rplen @d_str
select @p2=@p2+1,@p1=patindex(@s_str,substring(P_Intro,@p2+1,@len))
from Product where P_ID=@id
end
fetch next from #tb into @id
end
close #tb
deallocate #tb
--显示结果
---- select datalength(P_Intro),* from Product