Anda dapat melakukan ini dalam SQL, meskipun tidak cantik.
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
Anda harus yakin bahwa subquery n
memiliki setidaknya jumlah kata di setiap tag.
Di sini adalah SQLFiddle yang mendemonstrasikan ini.
Ini adalah menggabungkan silang data asli dengan nomor urut. Kemudian mengambil nilai ke-n dari string tag, menggunakan substring_index()
.
Untuk mendapatkan jumlah tag yang maksimal, Anda dapat melakukan:
select max(length(tags) - length(replace(tags, ',', 1))+1
from t