Nejprve normalizujte řetězec, odstraňte prázdná místa a ujistěte se, že na konci je %:
select replace(concat(user_location,'%'),'%%','%') as str
from YourTable where user_id = 1
Potom můžeme trikem spočítat počet vstupů. Nahraďte '%' znakem '% ' a spočítejte počet mezer přidaných do řetězce. Například:
select length(replace(str, '%', '% ')) - length(str)
as LocationCount
from (
select replace(concat(user_location,'%'),'%%','%') as str
from YourTable where user_id = 1
) normalized
Pomocí substring_index můžeme přidat sloupce pro řadu umístění:
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
Například US%UK%JAPAN%CANADA
, toto vytiskne:
LocationCount Loc1 Loc2 Loc3
4 US UK JAPAN
Takže vidíte, že to lze udělat, ale analýza řetězců není jednou ze silných stránek SQL.