Pertama normalkan string, hapus lokasi kosong dan pastikan ada % di akhir:
select replace(concat(user_location,'%'),'%%','%') as str
from YourTable where user_id = 1
Kemudian kita bisa menghitung jumlah entri dengan trik. Ganti '%' dengan '% ', dan hitung jumlah spasi yang ditambahkan ke string. Misalnya:
select length(replace(str, '%', '% ')) - length(str)
as LocationCount
from (
select replace(concat(user_location,'%'),'%%','%') as str
from YourTable where user_id = 1
) normalized
Menggunakan substring_index, kita dapat menambahkan kolom untuk sejumlah lokasi:
select length(replace(str, '%', '% ')) - length(str)
as LocationCount
, substring_index(substring_index(str,'%',1),'%',-1) as Loc1
, substring_index(substring_index(str,'%',2),'%',-1) as Loc2
, substring_index(substring_index(str,'%',3),'%',-1) as Loc3
from (
select replace(concat(user_location,'%'),'%%','%') as str
from YourTable where user_id = 1
) normalized
Sebagai contoh US%UK%JAPAN%CANADA
, ini mencetak:
LocationCount Loc1 Loc2 Loc3
4 US UK JAPAN
Jadi Anda lihat itu bisa dilakukan, tetapi penguraian string bukanlah salah satu kekuatan SQL.