宁波网站推广方式怎么样,国际化域名,王占山,app开发哪家好问题描述:
mysql中replace只能替换既定字符串#xff0c;如 #xff1a; UPDATE web_article SET body REPLACE ( body, div, body );
所以对于需要替换特定部分变化的字符串则显得无能为力#xff0c;如#xff1a;
BaseURIwww.bjeit.gov.cn…问题描述:
mysql中replace只能替换既定字符串如 UPDATE web_article SET body REPLACE ( body, div, body );
所以对于需要替换特定部分变化的字符串则显得无能为力如
BaseURIwww.bjeit.gov.cn/BaseURI
RULE政民互动/RULE
SOURCE北京市经济和信息化委员会/SOURCE
WEBROOThttp://t.7yun.cn/CYTTRESOURCE/WEBROOT
DISKROOTD:oot/DISKROOT方法1
需要将DISKROOTD:oot/DISKROOT之间额字符串全部替换中间的数据每项不同。所以单纯的replace无法解决。 需要用上substring和locate函数
LOCATE(substr,str,pos) //返回在substr字符串中str第一次出现的位置从位置pos开始算起
SUBSTR(str,pos,len) //返回str字符串中的从第pos位置开始的len个长度字符串。
replace(str1, str2, str3) //将所有str1字符串中出现的str2替换为str3
对三个函数组合使用则可以达到效果
SET REQUEST : BaseURIwww.bjeit.gov.cn/BaseURI
RULE政民互动/RULE
SOURCE北京市经济和信息化委员会/SOURCE
WEBROOThttp://t.7yun.cn/CYTTRESOURCE/WEBROOT
DISKROOTD:oot/DISKROOT;-- 开始位置找第一个开始字符
SELECT start : LOCATE( DISKROOT, REQUEST );
-- 结束位置从开始位置开始找第一个结束字符
-- 用CHAR_LENGTH不能用LENGTH因为要获取的是字符数不是长度
SELECT end : LOCATE( /DISKROOT, REQUEST, start) CHAR_LENGTH(/DISKROOT) - start;SELECT REPLACE(REQUEST,SUBSTRING(REQUEST,start,end),DISKROOTD:\\DSFA-SC\\WebRoot/DISKROOT ) re;或
SELECT REPLACE(REQUEST,SUBSTRING(REQUEST,LOCATE( DISKROOT, REQUEST ),LOCATE( /DISKROOT, REQUEST, LOCATE( DISKROOT, REQUEST ) ) CHAR_LENGTH( /DISKROOT ) - LOCATE( DISKROOT, REQUEST ) ),DISKROOTD:\\DSFA-SC\\WebRoot/DISKROOT ) re
FROMds_spider_action
方法2
mysql8.0可以使用正则regexp_replace替换但8.0以下的没有这个函数。
SELECT REGEXP_REPLACE(column_name, pattern, replacement) FROM table_name; 即
select REQUEST, regexp_replace(REQUEST, DISKROOT.*/DISKROOT, DISKROOTD:\\DSFA-SC\\WebRoot/DISKROOT ) ;