在我看来,我认为你应该把它放在数据库中的两个单独的表中:
countries: id, ..., ...
countries_names: country_id, default (bool or enum('yes', 'no')), name
在 name 列上放置索引,以便您可以快速搜索正确的 name 和 country_id:
SELECT name FROM countries_names
WHERE default = 'yes'
AND country_id = (SELECT country_id FROM countries_names
WHERE name = 'search_string'
LIMIT 1)
LIMIT 1
(可选,LEFT JOIN
如果您需要主表中的更多信息,您可以添加一个)
其他选项是仅为替代名称创建一个表:
countries: id, name, ..., ...
countries_alternative_names: country_id, name
但是在查找第一个匹配项时,您必须在两个表中进行搜索。
编辑:静态 JavaScript 解决方案:
function getCountryName(var name) {
switch (name) {
case "Bahamas" :
case "The Bahamas" :
return "Bahamas";
case "Bolivia" :
return "Bolivia";
case "Bosnia and Herzegovina" :
case "Bosnia & Herzegovina" :
return "Bosnia and Herzegovina"
// ...
default :
return null;
}
}