请看:
SELECT CONCAT('<A href="',
SUBSTRING_INDEX(
SUBSTRING_INDEX('xyz<A href="/v3/uploadfile/UploadFiles_5625/201107/2011070122330714.jpg" target=_blank>mmm </A>xyzxyz<A href="/v3/uploadfile/UploadFiles_5625/201107/2011070122330713.jpg" target=_blank></A>xyzxyz<A href="/v3/uploadfile/UploadFiles_5625/201107/2011070122330715.jpg" target=_blank>xxx </A>xyz'
,'<A href="',-3)
,'"',1)
,'" target=_blank></A>')
这句代码中出现SUBSTRING_INDEX,其函数原型为SUBSTRING_INDEX(str,delim,num),其返回在str中第num个delim之前或之后的字符串,若num为正则为向后取,为负则为向后取。
如SUBSTRING_INDEX(‘abcdefg’,'d',1)返回字符串efg,SUBSTRING_INDEX(‘abcdefg’,'d',-1)返回abc。
开头所示代码则表示,在字符串中寻找第3个'<A href="'之后的字符,而后取该返回字符串第一个'"'之前的字符串,则最后返回/v3/uploadfile/UploadFiles_5625/201107/2011070122330715.jpg。
本次所想替换的是文本代码中无效的链接代码,寻到不同后,再用concat连接起来,update即可。如例:
UPDATE phpcms_c_tougao
SET content=REPLACE(content,CONCAT('<A href="', SUBSTRING_INDEX( SUBSTRING_INDEX(content,'<A href="',-1) ,'"',1) ,'" target=_blank></A>'),'')
WHERE 1
(完毕)
下面这方法可以的,不过有个缺陷,就是如果在网址前面还有不包含开始字符http而只包含结尾字符.com的字符的话(比如邮箱xxx@169i.com),是删不去这个网址的。并且如果字段内容出现多个 http://www.169i.com网址的话,需要重复执行 update t1 set con = replace(con, substring(con, locate('http', con),locate('.com', con)-locate('http',con)+4),' http://www.xxxx.com') +4这里根据结尾字符长度而定欢迎分享,转载请注明来源:内存溢出
评论列表(0条)