现有一需求,需要使用存储过程
有一串字符串传入,  手机号|手机号|手机号|手机号
手机号字符串,以|分隔的字符串.
现在需要再存储过程中将此字符串分隔成一个个的手机号.然后遍历.
求方法

解决方案 »

  1.   

    这怎么切割?这是舍去一部分吧你去看看 SUBSTRING_INDEX的使用方法再来说吧
      

  2.   

    BEGIN
        declare C_SERAIL             VARCHAR(50); -- 剩下的串号
    declare C_PHONENUM            VARCHAR(50);-- 当前号码
    -- DECLARE RETURNSTR             VARCHAR(8000);
    DECLARE V_INDEX               INT;
    DECLARE V_SERAIL              VARCHAR(5000);-- 当前串号
    SELECT SUBSTRING_INDEX(I_SERAIL, '|', 1) INTO C_SERAIL;
    -- 第一次出现分隔符的下标
    SELECT LOCATE('|', I_SERAIL) INTO V_INDEX;
    -- 截取余下串号字符串
    SELECT SUBSTRING(I_SERAIL,V_INDEX+1) INTO V_SERAIL;               IF RETURNSTR IS NULL THEN
                             SET RETURNSTR = '';
                             END IF;
    WHILE V_INDEX > 0 DO-- 查询手机号SELECT A.PHONENUM
    INTO C_PHONENUM
    FROM T_SMS_PHONEANDSERIAL A
    WHERE A.SERIALNUM = C_SERAIL LIMIT 0,1;
     
    SET RETURNSTR = CONCAT(RETURNSTR,C_SERAIL,'|',C_PHONENUM,';');
    -- 当前串号
    SELECT SUBSTRING_INDEX(V_SERAIL, '|', 1) INTO C_SERAIL;
    -- 第一次出现分隔符的下标
    SELECT LOCATE('|', V_SERAIL) INTO V_INDEX;
    -- 截取余下串号字符串
    SELECT SUBSTRING(V_SERAIL,V_INDEX+1) INTO V_SERAIL; END WHILE;
         
    END