最近做一个项目(项目是采用的第三方的内容php框架+mysql搭建的),项目中有个功能需要采集大量的文章数据,数据库中直接存储的是文章的网址(举例:www.xxx.com/article?id=…

所以网站采集过后需要批量处理文章的url网址更换成现有的域名,需要大批量的更换数据库文章链接,查看了项目原来更新的方式是采取读取文章URL,再后端程序批量替换,这样操作耗时而且会造成程序页面卡死终止运行。

想优化这种更新方式,思考着采用sql代码上操作速度应该很快。

通过实验mysql中replace 函数是不能直接使用正则表达式替换的。

网络搜索也没找到好的解决办法。通过自己研究采用replace 函数+ REGEXP 函数、再集合其他字符串处理做出来的批量更新url字符串中的网址。

解决方案和思路如下:

注释:id , url 是你数据库存储链接的字段名。以下举例都是以https:// 做的。

1、先验证域名是哪种方式(http 或者https)

a、如果url是以http或者https开头的则进入下一个验证:再次验证区分具体是HTTP 或者https 。

b、如果url不是以http或者https开通的则直接返回URL。

select if(url REGEXP '^(https://)|(http://)',if(url REGEXP '^(https://)','','0'), url ) ,id,url from table_name

2、先排除url中的http:// 或者 https://  用于后续取值使用

SUBSTRING(url,LENGTH('https://')+1)  //返回的url值是不包含http:// 或者 https:// 的字符串

3、搜索定位已经删除(http:// 或者 https://)的字符串中的‘/’

LOCATE('/',SUBSTRING(url,LENGTH('https://')+1

//删除https:// 后,URL = ‘www.2333.com/a/ba/ba’

//查找URL 中从左边第一个‘/’ 也就是定位域名后面的斜杠位置。用于后续把“www.2333.com/”这个完整域名取出作为…

4、完整取出 url中的网址(格式:www.2333.com/)。

SUBSTRING(url,1,LOCATE('/',SUBSTRING(url,LENGTH('https://')+1))+ LENGTH('https://') )

5、最后加上if 判断当前url 具体是哪种格式的网址,然后再采用对应的截取方式取出带替换掉的域名。(方便阅读代码做了换行)

REPLACE(url,

if(url REGEXP '^(https://)|(http://)',if(url REGEXP '^(https://)',

SUBSTRING(url,1,LOCATE('/',SUBSTRING(url,LENGTH('https://')+1))+ LENGTH('https://') )

,SUBSTRING(url,1,LOCATE('/',SUBSTRING(url,LENGTH('http://')+1))+ LENGTH('http://') )

),url)

,"t.w123.com/")

这是拿来修改的表中所有数据的sql代码:

update  table_name  set url = REPLACE(url,

if(url REGEXP '^(https://)|(http://)',if(url REGEXP '^(https://)',

SUBSTRING(url,1,LOCATE('/',SUBSTRING(url,LENGTH('https://')+1))+ LENGTH('https://') )

,SUBSTRING(url,1,LOCATE('/',SUBSTRING(url,LENGTH('http://')+1))+ LENGTH('http://') )

),url)

,"t.w123.com/")

以上是我处理本次项目遇到的问题方案,处理更新效率比之前的后端程序快很多。发布记录下,如果大家有更好的建议方案欢迎留言交流谢谢。

mysql 批量替换域名_msyql 中批量替换url网址中的域名方案。相关推荐

  1. URL网址中的编码与解码问题

    一.中文编码有三种形式 1.utf-8编码        2.gbk编码        3.gb2312编码 这三种编码方式对汉字编码的组数不一样,其中2和3,一个汉字对应的都是两组%XX,而1对应的 ...

  2. 浏览器中输入的URL网址的意义-概述

    1.URL网址的含义 很久以前就有一个疑惑,通过浏览器访问网站时输入的网址(比如https://editor.csdn.net/md/)到底什么意思以及其背后的原理是什么呢?最近工作涉及到一些网络协议 ...

  3. 巧用excel公式提取网址中的域名---超级好用

    巧用excel公式提取网址中的域名-超级好用 经常会整理很多网址,需要按照他们的域名归类,下面是公式 在a1列是我们要整理的网址 b列我们输入公式 =MID(A1,SEARCH("/&quo ...

  4. java 文本编辑器替换特殊字符_linux中批量替换文本中字符串--转载

    (一)通过vi编辑器来替换. vi/vim 中可以使用 :s 命令来替换字符串. :s/well/good/ 替换当前行第一个 well 为 good :s/well/good/g 替换当前行所有 w ...

  5. PyCharm中批量查找及替换

    选中需要操作的字符 Ctrl + R 替换 Ctrl + Shift + F 全局查找 Ctrl + Shift + R 全局替换 源自: PyCharm中批量查找及替换 - Ella_Wu - 博客 ...

  6. 怎样在word中批量替换文字?Word替换文字这一招你会吗?

    平时我们在编辑word文档的时候,经常会遇到将文档中的某一个文字或者是数字替换成别的内容,很多人想到的方法就是一个字一个字的找,之后进行更改,这样会很耽误我们的时间,如果你的文档内容过多的话难道你也会 ...

  7. Excel如何在整个工作簿中批量替换指定数据

    今天跟大家分享一下Excel如何在整个工作簿中批量替换 1.下面以下图为例跟大家介绍一下怎么批量替换整个工作簿数据. 2.首先我们点击下图选项 3.单击[更多].[批量替换] 4.选择全部工作表,然后 ...

  8. WordSR 在多个Word文件中批量查找替换

    这阵子在看一些技术文档,都是 word 格式的,需要在多个Word文件中批量查找指定的内容,找不到免费的合适的软件,顺手开发了这个工具软件,下载地址 WordSR v0.2,下面是一些版权信息和软件介 ...

  9. 字体在ppt中可以整体替换吗_如何在ppt2010中批量替换字体

    有时当我们在制作完成演示文稿的时候,才发现里面的字体并不是我们想要的,为了快速修改,我们可以使用ppt中的替换功能来进行批量字体的修改,下面就让学习啦小编告诉你在ppt2010中批量替换字体的方法,希 ...

最新文章

  1. org.hibernate.hibernate.connection.release_mode
  2. 使用U盘装系统步骤详解
  3. 彻底弄懂flex布局
  4. python 启动django时报错MySQLdb._exceptions.OperationalError: (2059, <NULL>)和django.db.utils.OperationalEr
  5. Oracle database 安装在 Linux(rhel,oel,centos)上的用户设置
  6. 在ASP.Net中使用FCKeditor
  7. Android屏幕大小和密度对照表,以及px、dip、sp等像素单位的解释
  8. python表达式3 2 3的值为_Python3中的表达式运算符
  9. 《Unix环境高级编程》学习笔记:从点到面
  10. 将MSHFlexGrid1中记录导出为Excel
  11. apache2: unrecognized service
  12. 版本管理工具git常用命令
  13. LinGo基本用法总结
  14. 计算机程序设计员技能试题,计算机程序设计员试题及答案[1]
  15. java fps计算_帧率(FPS)计算的六种方法总结
  16. 网站建设:制作一个网站一般要多少钱?
  17. Verilog之条件语句、循环语句、块语句与生成语句
  18. Luvwgyx的娱乐场-题解
  19. 【AD】Altium Designer 新建一个项目
  20. 大道至简之九:周期的实质与投资机会

热门文章

  1. 用JS实现移动的窗口
  2. 使用JAVA如何对图片进行格式检查以及安全检查处理
  3. Python案例:求转置矩阵
  4. Java案例:利用JDBC连接Oracle数据库
  5. 【BZOJ4197】寿司晚宴,状态压缩DP
  6. 【BZOJ1257】余数之和sum,数论练习之取值讨论
  7. 【OJ4976】硬币,神奇的背包
  8. java请求响应中转_J2EE中的请求中转、重定向和包含关系
  9. multi task训练torch_采用single task模型蒸馏到Multi-Task Networks
  10. linux中设备文件和磁盘文件的区别,Linux下磁盘设备文件有哪些变化问题?