首页 > Sql-Mysql > Sql Server 使用正则表达式Regular进行内容替换

Sql Server 使用正则表达式Regular进行内容替换

例句:

<p>全部纳入鲜活<span id=stock_sz000061>农产品</span><span id=quote_sz000061></span>运输绿色通道网络范围,对整车合法装载运输鲜活农产品车辆免收车辆通行费;享受免收鲜活农产品通行费的农产品新增土豆等4个品种。</p>

现在在这个句子有含有没有用处的span标签,我们需要使用sql语句替换掉这些标签,最后达到这样的效果:

<p>全部纳入鲜活农产品运输绿色通道网络范围,对整车合法装载运输鲜活农产品车辆免收车辆通行费;享受免收鲜活农产品通行费的农产品新增土豆等4个品种。</p>

首先需要做如下操作,使SQL支持正则表达式.

1.下载支持所需的文件 sql_xp_regular.7z

2.复制 xp_pcre.dllProgram FilesMicrosoft SQL ServerMSSQLbinn 目录下;

3.运行安装脚本 INSTALL.SQL;

4.然后就可以使用啦,主要有若干function及以下6个SP:

  • xp_pcre_match
  • xp_pcre_match_count
  • xp_pcre_replace
  • xp_pcre_format
  • xp_pcre_split
  • xp_pcre_show_cache

我们使用function 这样进行替换:

master.dbo.fn_pcre_replace(input,pattern,extra)

input 是需要被替换的原文, pattern 是要匹配的正则表达式, extra 是要替换成的字符串.

对于要匹配的正则表达式,有一个很好网址可以检验所写的正则对不对,这个网址还是一个自称电脑的菜鸟的老师教给我的,嘿嘿,确实真的很好用,
这个网页也算我每天必开的网页之一了. http://rubular.com/

当写好所需要的正则表达式之后,替换掉pattern参数,记得要用单引号’括起来.

第一个参数就是原文,直接放进去就好,第三个参数是要替换成的字符,如果要替换成固定字符,直接写出来就行了,如果是向我们这个例子中这样,需要保留“农产品”这三个字,那么在正则中把匹配这三个字的正则表达式用小括号括起来,然后在extra参数中,用$1去调用,如果有多个参数,则分别为$1,$2等……

最后,我们的SQL语句就是这样:

update articleinfo set articlecontent = master.dbo.fn_pcre_replace(convert(varchar(8000),articlecontent), '(S*)', '$1')
因为articlecontent字段是ntext类型,所以需要先转换成varchar类型再进行正则匹配。

  1. 还没有评论
评论提交中, 请稍候...

留言

可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Trackbacks & Pingbacks ( 0 )
  1. 还没有 trackbacks