我有这样一个字符串:0002000B0016001M001S002A
(可变字符串长度但可被 4 整除)
我需要将它(在 MySql 中)分成 4 个字符的 block
期待的结果:
@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() 之类的等价物?
最佳答案
因此,您想将每个 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
的结果,您可能已经在过程中拥有它,在这种情况下您可以直接使用它
关于mysql - 在mysql中按 block 长度分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48373681/