我有一个数据库,其中包含使用各种不同字符的城市名称,从 åäö 到越南标志。地名都是大写的,例如“New York”和“Aix En Provence”。
我现在的问题是尝试在使用 postgresql 的 Heroku 中搜索这些城市名称。
p = Place.where("upper(name) LIKE '%" + place_name_searched.to_s.upcase.tr('åäöüñï','ÅÄÖÜÑÏ') + "%'").first
这是我想出的最好的方法,但它只是对 åäö 等的修复,并没有捕捉到所有 100 多个不同的字符,例如“é”。解决方案是不再填写该字符串。
一个普遍的问题是 upper(name) 似乎可以很好地翻译所有内容,但 upcase 只能处理英文字母。所以相应的搜索将是 .where("TÄBY like 'TäBY') if place_name_searched = 'täby'。
那么,如何将诸如“Täby”和“Jidd Ḩafş”之类的 postgresql 条目与用户输入的小写字符串(“täby”、“jidd hafs”)相匹配?
在我的应用程序的 Mysql 版本中一切正常,但是一旦我上传到 Heroku,一切都会失败。