文档章节

关于MYSQL替换和存储过程的问题、

p至尊宝
 p至尊宝
发布于 2016/04/18 21:07
字数 519
阅读 50
收藏 3

关于MYSQL替换和存储过程的问题、

业务场景是源数据排序问题、导致终端节目排序混乱、之前约定的排序字段sequence全是0,于是想到用节目标题中的数字来排序、如“甄说红楼之15—刘姥姥得济出荣府”、中获取数字15、但是mysql中进行数值匹配不太熟、于是记录下

中间用到之前没用过的字符串截取问题


1、从左开始截取字符串
left(str, length)
说明:left(被截取字段,截取长度)
例:select left(content,200) as abstract from my_content_t
2、从右开始截取字符串
right(str, length)
说明:right(被截取字段,截取长度)
例:select right(content,200) as abstract from my_content_t
3、截取字符串
substring(str, pos)
substring(str, pos, length)
说明:substring(被截取字段,从第几位开始截取)
substring(被截取字段,从第几位开始截取,截取长度)
例:select substring(content,5) as abstract from my_content_t
select substring(content,5,200) as abstract from my_content_t
(注:如果位数是负数 如-5 则是从后倒数位数,到字符串结束或截取的长度)
4、按关键字截取字符串
substring_index(str,delim,count)
说明:substring_index(被截取字段,关键字,关键字出现的次数)
例:select substring_index("blog.jb51.net","。",2) as abstract from my_content_t
结果:blog.jb51
(注:如果关键字出现的次数是负数 如-2 则是从后倒数,到字符串结束)

 最后结果

UPDATE HFProgramDataDigital p  INNER JOIN (
    SELECT id,
    SUBSTRING(title, LOCATE('之', title)+1,LOCATE('—', title)-LOCATE('之', title)-1 ) AS sq 
    FROM HFProgramDataDigital WHERE pdid=86089)
 a ON a.id=p.id
 SET sequence=a.sq


开始头脑发热用存储过程、也贴一下

DELIMITER $$

USE `APIDB`$$

DROP PROCEDURE IF EXISTS `testpro`$$

CREATE DEFINER=`root`@`%` PROCEDURE `testpro`()
BEGIN

    DECLARE this_id INT(10);
    DECLARE this_title VARCHAR(255);
    DECLARE done INT DEFAULT FALSE;

    DECLARE cur CURSOR FOR SELECT id,title FROM HFProgramDataDigital WHERE pdid=86089 ;

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=TRUE;

    OPEN cur;  
    
    REPEAT
        FETCH cur INTO  this_id,this_title;

        UPDATE HFProgramDataDigital SET sequence =  SUBSTRING(title, LOCATE('之', title)+1,LOCATE('—', title)-LOCATE('之', title)-1 ) WHERE id=this_id;
        SELECT this_id;        

    UNTIL done 
    END REPEAT;
    CLOSE cur;
    
END$$
DELIMITER ;


记录一下啊、备注一下

© 著作权归作者所有

共有 人打赏支持
p至尊宝
粉丝 2
博文 20
码字总数 8973
作品 0
深圳
后端工程师
私信 提问
加载中

评论(1)

p至尊宝
p至尊宝
更新电台下的二级栏目searchkey
UPDATE HFProgramData SET searchkey = CONCAT_WS(',',searchkey,'电台,广播,的电台,的广播') WHERE pid = 206

更新电台下的三级栏目searchkey

UPDATE HFProgramDataDigital SET searchkey = CONCAT_WS(',',searchkey,'电台,广播,的电台,的广播') WHERE pdid IN (
  SELECT id FROM HFProgramData WHERE pid = 206
)
MySQL 导出导入存储过程definer问题

在准备从一台服务器导出mysql 的存储过程到另外一台机器数据库的时候,发现一直报错 网上一查原来是definer的问题,利用 mysqldump -R导出的存储过程包含以前库的数据库名,新库名不一样。 ...

snecker
2015/10/22
278
0
mysql笔记(一):简单的过程/视图/表状态/导入导出数据到文本/导入导出数据到sql文件

过程/函数: //显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程show procedure/function status [like 'pattern']//从系统表中查询某一存储过程的相关信息select * from...

big_cat
2015/09/22
1K
0
MySQL必知必会笔记

【英】ben Forta著 5   1.0 使用扩展查询         |---->select note from table where Match(note) Against('anl');                        |--->where ...

wei-spring
2014/05/28
0
0
MySQL数据导出导入

工具 mysql mysqldump 应用举例 导出 导出全库备份到本地的目录 mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines --default-character-set=utf8 --lock-all-tables --add-drop-......

HJCui
2016/08/05
9
0
There is no 'root'@'%' registered

把别人机器上的MYSQL中的一个数据库导出来,生成了一个.sql的文件 在我的机器上导入这个.sql文件之后,在数据库连接时出现了如下错误: “There is no 'root'@'%' registered” 解决办法: ...

liangtee
2013/02/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java程序员可知为何公司宁花25K重新招人,也不花20K留住老员工?

身在职场,经常会暗自打听同事工资,尤其是得知身边新入职同事的工资居然比自己高,还高出一大截时,心里自然很不平衡,一心想要离职。 那么,为什么公司宁愿花高价招聘新员工也不愿意给老员...

Java填坑路
9分钟前
2
0
如何通俗地解释什么是网桥?

吴伟祥
12分钟前
1
0
阿里云文件存储(NAS)助力业务系统承载双十一尖峰流量

2018天猫双11全球狂欢节,全天成交额再次刷新纪录达到2135亿元,其中总成交额在开场后仅仅用了2分05秒即突破100亿元,峰值的交易量达到惊人的高度,背后离不开阿里云大数据计算和存储能力的支...

阿里云云栖社区
13分钟前
0
0
【windows 找不到“\\192.168.X.X”,请检查拼写是否正确】错误&139端口和445端口区别

今天像往常一样,通过共享盘访问其他主机时,却出现如题的错误,百思不得其解,毕竟没有改动什么配置啊,地址也没输错啊。 然后就在网上看到了一篇博客,才想起来上周末因为考虑到安全问题,...

fang_faye
13分钟前
0
0
示例Express中路由规则及获取请求参数

本次给大家分享一篇基于express中路由规则及获取请求参数的方法,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 express中常见的...

前端攻城小牛
17分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部