在mysql中按块长度拆分字符串

时间:2018-01-22 01:44:43

标签: mysql

我有一个这样的字符串:0002000B0016001M001S002A (变量字符串长度但可被4整除)

我需要将它(在MySql中)分成4个字符的块

预期结果:

@my_var = '0002'

@my_var = '000B'

@my_var = '0016'

@my_var = '001M'

@my_var = '001S'

@my_var = '002A'

我认为SUBSTR()可以在这里使用,但我不知道如何在mysql的循环中管理下一个位置

或者某些等同于PHP for MySql中的chunk_split()?

1 个答案:

答案 0 :(得分:2)

因此,您希望将每个4字节长序列用作过程的一部分,但不太确定如何使用SUBSTR来执行此操作?然后,像:

DELIMITER #
CREATE PROCEDURE split_string_in_fours(string VARCHAR(256))
BEGIN
  DECLARE len INT UNSIGNED DEFAULT 0;
  DECLARE pos INT UNSIGNED DEFAULT 1;
  DECLARE var CHAR(4) DEFAULT '';

  SET len = LENGTH(string);

  WHILE pos < len DO
    SET var=SUBSTR(string, pos, 4);
    SET pos=pos+4;
  END WHILE;
END #
DELIMITER ;
警告:未经考验。这里,var包含您想要的4字节序列。该过程采用要拆分的字符串。作为SELECT的结果,您可能已在此过程中使用此功能,在这种情况下,您可以直接使用它