我在世界上所有国家/地区都有一个OSM表(在postgres数据库中),其中json文本格式的“tags”列提供了有关给定国家/地区的大量不同信息:
psql/mydb# \d osm_country
Column | Type
--------------------+-------------------
id | integer
name | text
tags | text
列“标签”具有不同类型的信息,例如“flag”,“note”,“official_name”,“”ISO3166-1:numeric“,......以及非常多的”name:XX“使用XX语言中给定国家/地区的名称。例如,我在“标签”列中的“法国”行:
{ "flag":"http://www.flags/france.jpeg", "note":"blabla", "iso2":"FR",
"name:fr": "France", "name:es": "Francia", "name:en": "France"
"name:af": "Frankryk", "name:ak": "Frɛnkyeman", "name:ast": "Francia",
"name:am": "ፈረንሣይ", "name:an": "Francia", "name:ar": "فرنسا",
"name:ja": "フランス", "name:zh": "法國", "name:zu": "IFulansi",
....
"ISO3166-1:numeric": "250","osm_changeset": "47737436}
这里有大量不同的语言。我想保留一些特定的名称:XX(法语,英语,西班牙语......)以及除“name:XX”(flag,note,iso2,....)之外的所有不同标签。注意:除了名称之外的其他标志:XX从一个国家变为另一个,例如一些具有“flag”标签而另一些则没有。
我已经完成了这个但是使用了游标和临时表的复杂指令集,但我很确定我不知道如何以良好的方式处理json。您知道有没有办法通过一个独特的查询来执行此操作?
谢谢,托马斯