Jest to możliwe, ale niezbyt dobry pomysł.
Na przykład możesz podzielić listę oddzieloną przecinkami, generując zakres liczb i używając tego z SUBSTRING_INDEX, aby uzyskać każdy element. Jednak zakres liczb musi być tak duży, jak maksymalna liczba wartości rozdzielonych.
Następnie możesz użyć GROUP_CONCAT, aby ponownie połączyć listę we właściwej kolejności. Zwróć uwagę, że kolejność będzie się różnić w zależności od tego, czy rozdzieliłeś wartości jako liczby/całkowite, czy pozostawiłeś je jako ciągi.
SELECT id, title, GROUP_CONCAT(aNumber ORDER BY aNumber)
FROM
(
SELECT id, title, CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(numbers, ',', tens.acnt * 10 + units.acnt + 1), ',', -1) AS UNSIGNED) AS aNumber
FROM some_table
CROSS JOIN
(SELECT 0 AS acnt UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) units
CROSS JOIN
(SELECT 0 AS acnt UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) tens
WHERE LENGTH(numbers) - LENGTH(REPLACE(numbers, ',', '')) >= tens.acnt * 10 + units.acnt
) sub0
GROUP BY id, title;
Zademonstrowano tutaj na skrzypcach SQL (jeśli skrzypce SQL postanowią działać):-
http://www.sqlfiddle.com/#!9/c9703ee/4
Pierwszy wybór to rzutowanie wartości jako liczb całkowitych w celu ich posortowania liczbowego, drugi nie rzutuje ich, ale po prostu pozostawia je jako łańcuchy, stąd kolejność sortowania jest inna.