文档章节

存储过程处理MySQL中的URL地址,给其加上前缀

程序猿之小菜鸟
 程序猿之小菜鸟
发布于 2016/04/20 17:30
字数 452
阅读 305
收藏 0

现在遇到一个问题,MySQL数据库中有个images字段,用于存取文章中所有图片地址,有些地址是基于服务器的绝对路径,例如/watercms/upload/image/20160204/1454573950573007716.jpg,/watercms/upload/image/20160204/1454573944458029036.jpg,如果是App访问的话,这些图片就读取不出来了,因此通过存储过程来把字段中的图片路径,修改为带网络地址的路径。

思路:先将images字段,通过间隔符split成单个的图片地址,然后判断当前地址是否以http开头,如果不是,则加上http,然后把单个的图片地址再拼接起来,update到数据库中。

DROP FUNCTION IF EXISTS func_get_split_string_total;
CREATE FUNCTION func_get_split_string_total(
f_string TEXT,f_delimiter varchar(5)
) RETURNS int(11)
BEGIN
	RETURN 1 + (length(f_string) - length(replace(f_string,f_delimiter,'')));
END

定义方法,计算字符串通过,分隔符功能分隔成几段

DROP FUNCTION IF EXISTS func_split_str;
CREATE FUNCTION func_split_str(
  x VARCHAR(5000),
  delim VARCHAR(12),
  pos INT
)RETURNS VARCHAR(500)
BEGIN
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
       delim, '');
END

定义方法取得通过分隔符分割成段的第几段字符。

CREATE PROCEDURE `pro_update_knowledge_images`()
BEGIN
	DECLARE done INT DEFAULT FALSE;
	DECLARE kid INT;
	DECLARE images VARCHAR(5000);
	DECLARE new_img VARCHAR(200);
	DECLARE new_imgs VARCHAR(5000);
	DECLARE image_count INT;
	DECLARE i_index INT;
	DECLARE k_images_cursor CURSOR FOR
		SELECT k.id,k.images
		FROM ww_article_knowledge k
		WHERE k.`status` = 1 AND k.images IS NOT NULL AND k.images!='';
	DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

	OPEN k_images_cursor;
    read_loop:LOOP
	FETCH k_images_cursor INTO kid,images;
    IF done THEN
        LEAVE read_loop;
    END IF;
	SET image_count = func_get_split_string_total(images,',');
	SET i_index = 1;
	SET new_imgs = '';
	WHILE i_index<=image_count DO
		SET new_img = func_split_str(images,',',i_index);
		IF new_img  NOT LIKE 'http%' THEN
		    SET new_img = CONCAT('http://uhome.haier.net:8280',new_img);
		END IF;
		IF i_index > 1 THEN
		    SET new_imgs = CONCAT(new_imgs,',',new_img);
		ELSE
			SET new_imgs = new_img;
		END IF;
		SET i_index = i_index + 1;
	END WHILE;
	UPDATE ww_article_knowledge SET images=new_imgs WHERE id=kid;
	COMMIT;
	END LOOP;
	CLOSE k_images_cursor;
END

利用游标,对表的images字段进行处理。

© 著作权归作者所有

上一篇: Mysql delimiter
程序猿之小菜鸟
粉丝 5
博文 58
码字总数 9766
作品 0
青岛
程序员
私信 提问
一文弄懂Nginx的location匹配

由于团队在进行前后端分离,前端接管了 Nginx 和 node 层,在日常的工作中,跟 Nginx 打交道的时候挺多的。其中 location 是使用最多和改动最多的地方。之前对 location 的匹配规则是一知半解...

快狗打车前端团队
04/23
0
0
Apache Rewrite 规则详解

1、Rewrite规则简介 Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式。如果要想用到rewrite模块,必须先安...

LvSin
2015/05/12
2.3K
0
10分钟掌握数据类型、索引、查询的MySQL优化技巧

本文的内容是总结一些MySQL的常见使用技巧,以供没有DBA的团队参考。以下内容以MySQL5.5为准,如无特殊说明,存储引擎以InnoDB为准。 本文大纲: MySQL的特点 数据类型优化 索引优化 查询优化...

会长
05/07
0
0
[python爬虫] Selenium爬取内容并存储至MySQL数据库

前面我通过一篇文章讲述了如何爬取CSDN的博客摘要等信息。通常,在使用Selenium爬虫爬取数据后,需要存储在TXT文本中,但是这是很难进行数据处理和数据分析的。这篇文章主要讲述通过Seleniu...

Eastmount
2017/03/13
0
0
最新Django2.0.1在线教育零基础到上线教程(六)4-10

演示地址: http://mxonline.mtianyan.cn 教程仓库地址1: https://github.com/mtianyan/DjangoGetStarted 教程仓库地址2: https://github.com/mtianyan/Mxonline2 教程仓库地址3: https://gi......

天涯明月笙
2018/01/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

parseint和isNaN用法

本文转载于:专业的前端网站➭parseint和isNaN用法 <!doctype html><html><head><meta charset="utf-8"><title>无标题文档</title></head><body><script> var a='12'; alert......

前端老手
54分钟前
7
0
Kylin 精确去重在用户行为分析中的妙用

作者:史少锋,Apache Kylin committer & PMC,2019/10/11 在上次文章《如何在 1 秒内做到大数据精准去重》中,我们介绍了 Apache Kylin 为什么要支持大数据集上的精确去重,以及基于 Bitmap...

ApacheKylin
今天
5
0
学习记录(二) es6基本语法(rest参数,模板化,axios模块,拦截器)

日常学习记录 模块化:把一个大文件分成多个小文件,按照一定规范进行拼接 es5写法: 导出:module.exports = 数据 导入:require("路径") /路径未添加后缀名时 //默认添加.js //把路径作为文件名...

Pole丶逐
今天
4
0
以程序员的角度怎么购买一台「性价比高的电视」

前俩天有小伙伴在我的文章下留言,说能否把 【国内电视机都介绍一下】,今天我已在TV端开发多年的程序员的角度。谈谈已程序员的角度如何购买一台性价比高的电视。 国内大的电视机品牌介绍 长...

我们都很努力着
今天
5
0
PhotoShop 色调:理解直方图/RGB通道信息

一、直方图:图表的形式,展示图像像素分布的情况 1.平均值:表示平均亮度 2.标准偏差值:表示亮度值范围内的中间值 3.像素: 表示用于计算直方图的像素总数 4.色阶:显示指针下面的区域亮度...

东方墨天
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部