我在mysql中有一个字符串中的分隔文本块需要解析。块如下所示
BGN|1
TST|12345|5
END|1
BGN|2
TST|22345|6
END|2
BGN|3
TST|67554|7
END|3
我想在tst之后立即提取值, 12345
, 22345
, 67554
转换为单独的记录(而不是串联),因此结果如下所示
12345
22345
64554
我能够使用locate值解析字符串,但我不确定如何使用单个locate命令从数据中获取多个值。在sql server中,这对我来说不是问题。
edit:我意识到我可能可以在循环中使用substring\u index,但我不希望在字符串中运行循环。
1条答案
按热度按时间8fsztsew1#
这个解决方案怎么样:
输出:
使用
mysql's SUBSTRING_INDEX
函数可以在计算分隔符的出现次数之前从字符串中提取子字符串(|
)并与REPLACE
以及SUBSTRING
您可以提取所需的值。或者如果第二个字段具有固定长度,则:
请看这里的演示。
哪里
test_data
表如下所示: