Możesz to zrobić w SQL, chociaż nie jest to ładne.
select distinct reverse(substring_index(reverse(substring_index(tags, ',', n.n)), ',', 1)) as word
from t cross join
(select 1 as n union all select 2 as n union all select 3 as n union all select 4 as n) n
having word is not null
Musisz mieć pewność, że podzapytanie n
zawiera co najmniej liczbę słów w każdym tagu.
Tutaj jest SQLFiddle, który to demonstruje.
Jest to krzyżowe łączenie oryginalnych danych z kolejnymi numerami. Następnie wybiera n-tą wartość z ciągów tagów, używając substring_index()
.
Aby uzyskać maksymalną liczbę tagów, możesz:
select max(length(tags) - length(replace(tags, ',', 1))+1
from t