关于MYSQL替换和存储过程的问题、
关于MYSQL替换和存储过程的问题、
p至尊宝 发表于2年前
关于MYSQL替换和存储过程的问题、
  • 发表于 2年前
  • 阅读 44
  • 收藏 3
  • 点赞 1
  • 评论 1

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: MYSQL substring函数

关于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 ;


记录一下啊、备注一下

共有 人打赏支持
粉丝 3
博文 11
码字总数 3467
评论 (1)
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
)
×
p至尊宝
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: