きれいではありませんが、SQLでこれを行うことができます。
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
サブクエリn
を確認する必要があります 少なくとも各タグに単語数が含まれています。
こちら これを示すSQLFiddleです。
これは、元のデータを連番でクロス結合しています。次に、substring_index()
を使用して、タグ文字列からn番目の値を選択します。 。
タグの最大数を取得するには、次のようにします。
select max(length(tags) - length(replace(tags, ',', 1))+1
from t