2012-10-13 68 views
1

我找到了post,它有3列值用逗號分隔。我會用逗號分隔3個以上的值。例如,將表格列中的逗號分隔值分隔成使用mysql的行嗎?

ID CITY_ID 
-------------- 
1  12,18,16,17,35 
2  12,16 
.... 
-------------- 

是否有可能拆分字符串city_id並使用像下面

ID CITY_ID 
    ------------- 
    1 12 
    1 18 
    1 16 
    .... 
    2 16 
    .... 
    -------------- 

MySQL查詢如果是,請給出一些建議使之成爲行....

+0

您可以編寫一個程序來做到這一點,但它是相當混亂。您可以通過循環遍歷每條記錄來在PHP中實現它。 – eggyal

+0

@eggyal謝謝。我可以這樣做但是想知道它是否可能在mysql中...... – mymotherland

+0

它可以在mysql中完成,但是也可以像eggyal說的那樣,它很雜亂。 PHP是一種選擇嗎? – itachi

回答

3

嘗試這

SELECT ID,SUBSTRING_INDEX(SUBSTRING_INDEX(t.CITY_ID, ',', n.n), ',', -1) value 
    FROM Table1 t CROSS JOIN 
    (
    SELECT a.N + b.N * 10 + 1 n 
    FROM 
    (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a 
    ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b 
    ORDER BY n 
    ) n 
WHERE n.n <= 1 + (LENGTH(t.CITY_ID) - LENGTH(REPLACE(t.CITY_ID, ',', ''))) 
ORDER BY ID,value 

FIDDLE DEMO

輸出:


ID VALUE 
1 12 
1 16 
1 17 
1 18 
1 35 
2 12 
2 16 
+1

純金,謝謝! :d – Stiropor