我有一百万张照片的大数据库。它包含一个名为“place”的字段,其中包含DB中每张照片的位置信息(即城镇、省、市、国家等),如图所示:

56461972:MetroTuria:POI,20220221:Olivereta:Suburb,776688:Valencia:Town,12602139:Valencia:Province,12578038:Valencia:AutonomousCommunity,20080321:46018:Zip,23424950:**Spain:Country**,56043644:Europe%2FMadrid:Timezone

我有兴趣检索它中找到的所有国家/地区名称,可能会将它们返回到另一个表中。跳过国名重复的地方。这样我就可以知道拍照的国家了。
因此,类似于找到文本的地方,即“:country”,它检索与之关联的国家名称,并将其添加到新表中。
这有点难以解释。希望有意义。
提前谢谢。
*一些响应更新:
56558566:Duval+Street:Suburb,2432044:Key+West:Town,12587846:Monroe:County,2347568:Florida:State,12772085:33040:Zip,23424977:United+States:Country,56043648:America%2FNew_York:Timezone
56574535:Columbus+Park:Suburb,2496012:South+Boston:Suburb,2367105:Boston:Town,12588712:Suffolk:County,2347580:Massachusetts:State,12758726:02127:Zip,23424977:United+States:Country,56043648:America%2FNew_York:Timezone
1984273:Artybash:Town,2120895:GornoAltaysk:Town,12597718:Turochakskiy+Raion:District,20070530:Altai+Republic:Province,24553375:649:Zip,23424936:Russia:Country,56043608:Asia%2FOmsk:Timezone

拜托,我只想找回一次。例如,如果“西班牙”与许多图像相关,则应仅考虑一次。我的全部目的只是想看看拍照国家的总数和名称。
请注意,我只是一个SQL初学者。

最佳答案

如果您只想提取国家,可以使用:

select substring_index(substring_index(place, ':Country', 1), ':', -1)

内取国前部分。这是一个以substring_index()结尾的长字符串。外部' . . . Zip,23424950:**Spain'取最后一个冒号(国家名称)后面的所有内容。
Here是一个rextester。
编辑:
如果要按国家计数,则:
select substring_index(substring_index(place, ':Country', 1), ':', -1) as country,
       count(*)
from t
group by country;

10-07 12:35
查看更多