关于MYSQL替换和存储过程的问题、
2016-06-01 15:46
816 查看
摘要: 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 则是从后倒数,到字符串结束)
最后结果
开始头脑发热用存储过程、也贴一下
记录一下啊、备注一下
关于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 ;
记录一下啊、备注一下
相关文章推荐
- mysql 报错ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executin
- mybatis+mysql返回插入数据主键
- mysql常用配置---详细解释
- MySQL基本操作
- 服务器本地mysql连接报错密码过期
- mysql第一篇
- 笔记二:关于在Windows环境下mysql数据库乱码的问题
- Mysql学习——MySQL导入导出.sql文件及常用命令
- Mysql各种类型字段长度
- MySql避免重复插入记录
- MYSQL安装步骤(免安装步骤)
- 经常被使用的MySQL函数
- MySQL删除数据库的两种方法
- Mysql事务详解(二)事务的隔离性和容易引起的问题
- 远程连接mysql
- 新安装ubuntu12.04部署项目+mysql安装总结
- MySQL CREATE TRIGGER (1)
- MySQL簇--mysql集群搭建
- MySQL 5.6配置GTID复制模式
- mysql常用命令(2)