戊辰人博客

青,取之于蓝而青于蓝;冰,水为之而寒于水。

利用MySQL存储过程分割字符串

日期:2015年11月20日 作者: 分类:数据库 阅读:1,003

MySQL存储过程可用于分割字符串,现有一段字符串,如:”12,14,17,19″,要把它按逗号(,)分割,然后用于SQL中的 where in 条件查询。

1. 计算可分割成多少个字符串(func_split_strlen)

DELIMITER $$
DROP FUNCTION IF EXISTS `func_split_strlen`$$
CREATE DEFINER=`root`@`localhost` FUNCTION `func_split_strlen`(
    f_string varchar(200),  -- 传入字符串
    f_delimiter varchar(5)  -- 分割符
) RETURNS int(11)
begin
    return 1+( length(f_string) - length(replace(f_string,f_delimiter, '')) );
end $$
DELIMITER ;

2. 拆分字符串函数(func_split)

DELIMITER $$
DROP FUNCTION IF EXISTS `func_split`$$
-- 功能:从 f_string 中以 f_delimiter 提取第 f_order 个字符
CREATE DEFINER=`root`@`localhost` FUNCTION `func_split`(
    f_string varchar(200),   -- 传入字符串
    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 ;

阅读全文…