Trước tiên hãy chuẩn hóa chuỗi, xóa các vị trí trống và đảm bảo có% ở cuối:
select replace(concat(user_location,'%'),'%%','%') as str
from YourTable where user_id = 1
Sau đó, chúng ta có thể đếm số lượng mục nhập bằng một thủ thuật. Thay thế '%' bằng '%' và đếm số khoảng trắng được thêm vào chuỗi. Ví dụ:
select length(replace(str, '%', '% ')) - length(str)
as LocationCount
from (
select replace(concat(user_location,'%'),'%%','%') as str
from YourTable where user_id = 1
) normalized
Sử dụng substring_index, chúng tôi có thể thêm cột cho một số vị trí:
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
Đối với ví dụ của bạn US%UK%JAPAN%CANADA
, bản in này:
LocationCount Loc1 Loc2 Loc3
4 US UK JAPAN
Vì vậy, bạn thấy nó có thể được thực hiện, nhưng phân tích chuỗi không phải là một trong những điểm mạnh của SQL.