mysql - 在mysql中按 block 长度分割字符串

标签 mysql

我有这样一个字符串: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/

相关文章:

Mysql为什么12.3 < 12.3是真的

php - 检查列是否已分组(QueryBuilder)

php - 如何从另一个表中选择表中的特定条件

mysql - 计算单行中单词的出现次数

php - 从 PHPMYADMIN 导出和导入数据

php - foreach 结果分为两列

PHP和MYSQL时间相关查询

mysql - 如何访问单向ManyToOne关联的目标实体的方法

mysql - 为什么 sql 数据库不允许为所有查询创建函数而不是在调用程序中构造 sql 字符串?

mysql - 计算右表上的唯一 ID