当前位置: 首页 > news >正文

mysql中替换字符串(正则)

问题描述:

mysql中replace只能替换既定字符串,如 :

  UPDATE `web_article` SET body = REPLACE ( body, '<div>', '<body>' ); 

所以对于需要替换特定部分变化的字符串则显得无能为力,如:

<BaseURI>www.bjeit.gov.cn</BaseURI>
<RULE>政民互动</RULE>
<SOURCE>北京市经济和信息化委员会</SOURCE>
<WEBROOT>http://t.7yun.cn/CYTTRESOURCE</WEBROOT>
<DISKROOT>D:oot</DISKROOT>

方法1:

需要将<DISKROOT>D: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 := '<BaseURI>www.bjeit.gov.cn</BaseURI>
<RULE>政民互动</RULE>
<SOURCE>北京市经济和信息化委员会</SOURCE>
<WEBROOT>http://t.7yun.cn/CYTTRESOURCE</WEBROOT>
<DISKROOT>D: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),'<DISKROOT>D:\\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 ) ),'<DISKROOT>D:\\DSFA-SC\\WebRoot</DISKROOT>' ) re 
FROM`ds_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>', '<DISKROOT>D:\\DSFA-SC\\WebRoot</DISKROOT>'  ) ;

http://www.xdnf.cn/news/1017253.html

相关文章:

  • mapbox进阶,切片网格生成实现
  • 深入理解Python协程:asyncio、异步并发、事件循环
  • 开疆智能ModbusTCP转Devicenet网关连接三菱PLC与ABB机器人配置案例
  • NAS 年中成果汇报:从入门到高阶的影视/音乐/小说/资源下载 等好玩Docker 全集合
  • Python让自动驾驶“看见未来”:环境建模那些事儿
  • AWS知识点和技术面试模拟题
  • 基于python大数据的nba球员可视化分析系统
  • 大模型驱动数据分析革新:美林数据智能问数解决方案破局传统 BI 痛点
  • CSS基础学习1
  • Python 数据分析10
  • 【Three.js】初识 Three.js
  • 【论文阅读33】滑坡易发性 PINN ( EG2025 )
  • 基于 SpaCy DependencyMatcher 编写复杂依存关系规则实战指南
  • java 将多张图片合成gif动态图
  • 国产数据库StarRocks在数栈轻量化数据开发的全流程实践
  • 普通人怎样用好Deepseek?
  • MySQL 8.0 OCP 英文题库解析(十九)
  • 26-数据结构-线性表2
  • linux alignment fault对齐造成设备挂死问题定位梳理
  • Leetcode 2604. 吃掉所有谷子的最短时间
  • 线性回归原理推导与应用(九):逻辑回归多分类问题的原理与推导
  • 用户通知服务,轻松实现应用与用户的多场景交互
  • 嵌套滚动交互处理总结
  • FastChat 架构拆解:打造类 ChatGPT 私有化部署解决方案的基石
  • python实现鸟类识别系统实现方案
  • Java实现Pdf转Word
  • 打破语言壁垒!DHTMLX Gantt 与 Scheduler 文档正式上线中文等多语言版本!
  • 使用 PolarProxy+Proxifier 解密 TLS 流量
  • 北京大学肖臻老师《区块链技术与应用》公开课:08-BTC-比特币挖矿
  • MySQL索引原理