最初に文字列を正規化し、空の場所を削除して、最後に%があることを確認します:
select replace(concat(user_location,'%'),'%%','%') as str
from YourTable where user_id = 1
次に、トリックでエントリの数を数えることができます。 '%'を'%'に置き換え、文字列に追加されたスペースの数を数えます。例:
select length(replace(str, '%', '% ')) - length(str)
as LocationCount
from (
select replace(concat(user_location,'%'),'%%','%') as str
from YourTable where user_id = 1
) normalized
substring_indexを使用して、いくつかの場所の列を追加できます:
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
たとえば、US%UK%JAPAN%CANADA
、これは印刷します:
LocationCount Loc1 Loc2 Loc3
4 US UK JAPAN
したがって、それは可能であることがわかりますが、文字列の解析はSQLの長所の1つではありません。