除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

时间: 2024-09-18 13:32:57

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

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

方法很简单: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 datal

替换MSSQL数据库text字段恶意脚本

删除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"></

vb6 sql instr-vb6环境下,无法使用instr、charindex查询数据库指定字段中特定字符的位置。

问题描述 vb6环境下,无法使用instr.charindex查询数据库指定字段中特定字符的位置. 创建视图,需要查询数据库指定字段特定字符,代码以下: quetn = "create view que_ta AS select max(que_info.test_id) as test_id,sum(case when instr(1, que_category.cate_name, '选择题')>0 then 1 end) as 选择题," & _ "sum

csv文件导入到数据库时字段中的分隔符怎么屏蔽

问题描述 csv文件导入到数据库时字段中的分隔符怎么屏蔽 csv文件导入到数据库过程中,字段中有分隔符的情况应该怎么处理呢?维基百科上说应该用双引号包裹,但这样并没有效果.我用的是sql server2012,请大神指教.

mysql数据库text字段排序实现语句

mysql中,默认对text字段进行排序的话是按text字段的首字符进行排序,即假如某表结构如下: 如果默认对此text类型的字段进行排序的话,如select * from table order by f1 asc. 结果可能如下图这样: 发现mysql对text类型的字段排序时只对首字符进行排序,并不是我们所预期的结果(按数字大小排序). 所以如果想要解决这个问题,我们可以使用mysql的一个内置函数:cast,CAST ( expression AS data_type ).cast是一个

在oracle 数据库查询的select 查询字段中关联其他表的方法_oracle

大部分情况下,这种动态生成的sql查询语句写法如下: 复制代码 代码如下: select A表.字段1,A表.字段2,B表.字段返回,C表.字段返回 from A表 ,B表,C表 [where A表,B表,C表关联及各自的条件语句] 但是这个方法有一个缺点,那就是在动态的生成这个查询语句的业务逻辑程序仍然很复杂.这里就介绍一个降低业务逻辑复杂度的查询sql生成方式.其语法结构如下: 复制代码 代码如下: select A表.字段1,A表.字段2,B表.字段,C表.字段 from A表 [wher

在MySQL字段中使用逗号分隔符的方法分享_Mysql

被分割的字段一定是有限而且数量较少的,我们不可能在一个字符串中存储无限多个字符 这个字段所属的表与这个字段关联的表,一定是一对多的关系 比如下面这个表结构所代表的content与tag这两个对象 复制代码 代码如下: mysql> SELECT * FROM content; +----+------+| id | tags | +----+------+| 1 | 1,2 | | 2 | 2,3 | +----+------+ 2 rows in set (0.01 sec) mysql>

PHP教程之PHP中shell脚本的使用方法

我们都知道,在计算机科学中,SHELL类似于DOS下的command.com.它接收用户命令,然后调用相应的应用程序.同时它又是一种程序设计语言.作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支. PHP经过长时间的发展,很多用户都很了解PHP了,这里我发表一下个人理解,和大家讨论讨论.大多数情况下,我使用 exec() 命令和数据数组处理所有东西.或者对

PHP教程之PHP中shell脚本的使用方法分享_php技巧

作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支. PHP经过长时间的发展,很多用户都很了解PHP了,这里我发表一下个人理解,和大家讨论讨论.大多数情况下,我使用 exec() 命令和数据数组处理所有东西.或者对更简单的命令使用 shell_exec(),尤其是不关心结果时.如果仅需返回一个 PHP shell脚本,我就使用 passthru().通常,我