首页 MsSql Sql正则替换

Sql正则替换

现在有一个小场景,数据库中某表的一个字段存储的是html代码,假如现在需要替换掉html代码中的所有标签。我们当然可以在C#中这样做:Regex regex = new Regex(@]*

现在有一个小场景,数据库中某表的一个字段存储的是html代码,假如现在需要替换掉html代码中的所有标签。

我们当然可以在C#中这样做:

可是我并不想再写个循环去遍历每条记录,然后保存每条记录,我想在数据库中一步到位,而sql只提供了简单的replace函数,这个函数明显不能达到咱的要求,那就去写一个自定义函数吧。

函数源代码如下:

IF @hr <span style="color: gray;"><> 0 <span style="color: blue;">begin
exec @hr <span style="color: gray;">= <span style="color: maroon;">sp_OADestroy @objRegExp
<span style="color: blue;">return <span style="color: gray;">null
<span style="color: blue;">end
exec @hr <span style="color: gray;">= <span style="color: maroon;">sp_OASetProperty @objRegExp<span style="color: gray;">,<span style="color: red;">'Pattern'<span style="color: gray;">,@regexp
<span style="color: blue;">IF @hr <span style="color: gray;"><> 0 <span style="color: blue;">begin
exec @hr <span style="color: gray;">= <span style="color: maroon;">sp_OADestroy @objRegExp
<span style="color: blue;">return <span style="color: gray;">null
<span style="color: blue;">end
exec @hr <span style="color: gray;">= <span style="color: maroon;">sp_OASetProperty @objRegExp<span style="color: gray;">,<span style="color: red;">'Global'<span style="color: gray;">,@globalReplace
<span style="color: blue;">IF @hr <span style="color: gray;"><> 0 <span style="color: blue;">begin
exec @hr <span style="color: gray;">= <span style="color: maroon;">sp_OADestroy @objRegExp
<span style="color: blue;">return <span style="color: gray;">null
<span style="color: blue;">end
exec @hr <span style="color: gray;">= <span style="color: maroon;">sp_OASetProperty @objRegExp<span style="color: gray;">,<span style="color: red;">'IgnoreCase'<span style="color: gray;">,@ignoreCase
<span style="color: blue;">IF @hr <span style="color: gray;"><> 0 <span style="color: blue;">begin
exec @hr <span style="color: gray;">= <span style="color: maroon;">sp_OADestroy @objRegExp
<span style="color: blue;">return <span style="color: gray;">null
<span style="color: blue;">end
exec @hr <span style="color: gray;">= <span style="color: maroon;">sp_OAMethod @objRegExp<span style="color: gray;">,<span style="color: red;">'Replace'<span style="color: gray;">,@result <span style="color: blue;">OUTPUT<span style="color: gray;">,@source<span style="color: gray;">,@replace
<span style="color: blue;">IF @hr <span style="color: gray;"><> 0 <span style="color: blue;">begin
exec @hr <span style="color: gray;">= <span style="color: maroon;">sp_OADestroy @objRegExp
<span style="color: blue;">return <span style="color: gray;">null
<span style="color: blue;">end
exec @hr <span style="color: gray;">= <span style="color: maroon;">sp_OADestroy @objRegExp
<span style="color: blue;">IF @hr <span style="color: gray;"><> 0 <span style="color: blue;">begin
return <span style="color: gray;">null
<span style="color: blue;">end

return @result
<span style="color: blue;">end

需要注意的是,即使写好了这个函数,也并不能马上使用。执行这个函数时可能会出现以下的错误:

这是因为未开启Ole Automation Procedures选项,。执行下面的语句开启这个选项:

所有的准备工作都已经做好,那就试验一下吧。

html代码:

调用代码:

Key Contact:
Mr Jack,Zhou
General Manager

Mr Adu,Ho
Marketing Director
Overseas Sales

Ms Winny,Luo
Sales Manager
Overseas Sales

' ]*>'0

本文来自网络,不代表青岛站长网立场。转载请注明出处: https://www.0532zz.com/html/shujuku/mssql/20210117/16304.html
上一篇
下一篇

作者: dawei

【声明】:青岛站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

返回顶部