将分隔字符串值拆分为行

5 mysql sql database delimiter

一些外部数据供应商想要给我一个数据字段 - 管道分隔的字符串值,我发现这很难处理。

如果没有应用程序编程语言的帮助,有没有办法将字符串值转换为行?

然而存在一个困难,该字段具有未知数量的分隔元素。

有问题的数据库引擎是 MySQL。

例如:

Input: Tuple(1, "a|b|c")

Output:

Tuple(1, "a")
Tuple(1, "b")
Tuple(1, "c")
Run Code Online (Sandbox Code Playgroud)

小智 4

可能并不像我最初想象的那么困难。

这是一个通用方法:

  1. 计算分隔符出现的次数length(val) - length(replace(val, '|', ''))
  2. 循环多次,每次获取一个新的分隔值并将该值插入到第二个表中。