È può farlo con puro SQL come questo
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.values, ',', 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.values) - LENGTH(REPLACE(t.values, ',', '')))
ORDER BY value
Nota: Il trucco è quello di sfruttare tally (numeri) tavolo e un molto utile in questa funzione MySQL SUBSTRING_INDEX()
caso. Se si eseguono molte query di questo tipo (suddivisione), è possibile considerare di popolare e utilizzare una tabella di conteggio persistente invece di generarla su una sottoquery come in questo esempio. La sottoquery in questo esempio genera una sequenza di numeri da 1 a 100 che consente effettivamente di dividere fino a 100 valori delimitati per riga nella tabella di origine. Se hai bisogno di più o meno puoi facilmente regolarlo.
uscita:
| VALUE |
|----------------|
| somethingA |
| somethingB |
| somethingC |
| somethingElseA |
| somethingElseB |
Ecco SQLFiddle demo
Questo è come la query potrebbe apparire con una tabella conteggio persistente
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.values, ',', n.n), ',', -1) value
FROM table1 t CROSS JOIN tally n
WHERE n.n <= 1 + (LENGTH(t.values) - LENGTH(REPLACE(t.values, ',', '')))
ORDER BY value
Ecco SQLFiddle demo
ha chiesto un paio di volte gazillion su SO: eghttp: //stackoverflow.com/questions/10581772/sql-server-2008-how-to-split-a-comma-separated-value-to-columns , http://stackoverflow.com/questions/13873701/convert-comma-separated-column-value-to-rows –
@MitchWheat - questa non è una risposta per questa domanda. Hanno un numero fisso di valori separati da virgola, io no. –
Stai cercando una soluzione SQL pura o una soluzione in qualche altra lingua, ad esempio PHP. –