DELIMITER $$USE `test`$$DROP FUNCTION IF EXISTS `func_get_split_string`$$CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_split_string`(f_string VARCHAR(1000),f_delimiter VARCHAR(5),f_order INT) RETURNS VARCHAR(255) CHARSET utf8
BEGIN
DECLARE result VARCHAR(255) DEFAULT '';
SET result = REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(f_string,f_delimiter,f_order)),f_delimiter,1));
RETURN result;
END$$DELIMITER ;效果mysql> SELECT func_get_split_string('9001#10018#15#','#',3);
+-----------------------------------------------+
| func_get_split_string('9001#10018#15#','#',3) |
+-----------------------------------------------+
| 15 |
+-----------------------------------------------+
1 row in set (0.02 sec)
使用,当然也可以直接REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(f_string,f_delimiter,f_order)),f_delimiter,1));
DELIMITER $$USE `test`$$DROP FUNCTION IF EXISTS `countOrder`$$CREATE DEFINER=`root`@`localhost` FUNCTION `countOrder`(f_string VARCHAR(1000),f_delimiter VARCHAR(5)) RETURNS VARCHAR(255) CHARSET utf8
BEGIN
DECLARE result VARCHAR(255) DEFAULT '';
DECLARE lastresult VARCHAR(255) DEFAULT '';
DECLARE f_order INT DEFAULT 1;
SET result=func_get_split_string(f_string,f_delimiter,f_order);
WHILE TRIM(result)!='' DO
SET lastresult=CONCAT_WS(' ',lastresult,NULL,result);
SET f_order=f_order+1;
SET result=func_get_split_string(f_string,f_delimiter,f_order);
END WHILE;
RETURN lastresult;
END$$DELIMITER ;
解决方案 »
- You have an error in your SQL syntax:check the manual that corresponds to....
- 受不了errorno:1064 了
- linux 安装mysql 出现的问题 Duplicate entry 'localhost-' for key 1
- 庞大的数据智能导入问题,如何实现,谢谢
- 關于一個點名表.急求高手們賜教!!小弟在此跪謝先.
- mysql-front 如何新建InnoDB类型的表?
- 关于MySQL的配置问题
- 在一个条件的两个值,选择一个非空查询
- 两表合并sql求助。
- mysql left join 关联查询很慢
- 求MYSQL繁體版
- mysql多表清空
思路不错。另外在MYSQL中你还可以用
mysql> select SUBSTRING_INDEX(SUBSTRING_INDEX('9001#10018#15#','#',3),'#',-1);
+-----------------------------------------------------------------+
| SUBSTRING_INDEX(SUBSTRING_INDEX('9001#10018#15#','#',3),'#',-1) |
+-----------------------------------------------------------------+
| 15 |
+-----------------------------------------------------------------+
1 row in set (0.36 sec)mysql>