2015-04-27 47 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 
相關問題