2015-04-27 97 views
0

我在一个数据库表中有一些奇怪的字符串有点问题。 我需要将这样的字符串示例拆分为INT数组,或者将其拆分为INT循环或某物。在没有自己的函数的MySQL中进行SQL拆分

这必须在 '平时' 的MySQL来完成(无功能,声明等等 - 只有SELECT语句+内置函数一样REPLACE()SUBSTRING()

524;779;559;;;559;411;760;; +等;

这样的意图是否可以执行?

+0

你的表格结构是什么?你需要的结果是什么?\ – Alex

+0

我需要通过sptlitting从字段'some_field'中检索每个INT VARCHAR(50),其中包含这些示例 - 在每个 – Rafcik

+1

Plz指定了您想要的结果之后用';拼接INTS。 –

回答

0

如果这是一次运行一次操作,将您的数据转换为理智的格式,您可以从this answer中获得想法,并将其扩展到一个字符串中的最大ids数。

SQL Fiddle上的示例。

SELECT DISTINCT id, val 
FROM (
    SELECT id, substring_index(substring_index(`val`,';',-1),';',1) AS val FROM tab 
    UNION ALL 
    SELECT id, substring_index(substring_index(`val`,';',-2),';',1) FROM tab 
    UNION ALL 
    SELECT id, substring_index(substring_index(`val`,';',-3),';',1) FROM tab 
    UNION ALL 
    SELECT id, substring_index(substring_index(`val`,';',-4),';',1) FROM tab 
    UNION ALL 
    SELECT id, substring_index(substring_index(`val`,';',-5),';',1) FROM tab 
) x 
WHERE val <> '' 
ORDER BY id 
相关问题