postgresql更新和其他表一样

时间:2014-02-04 16:06:09

标签: postgresql match

我有一个18000行的表。每个都适合不同的城市或村庄。该表包含每个位置的坐标。

其中一些条目编写错误,包含错误。但我有另一张表格,其中包含所有准确拼写的城市。

是否有更新包含与正确名称匹配表名称的坐标的表?

table with coordinates      | table with correct name
Pariss                      | Paris

1 个答案:

答案 0 :(得分:1)

如果所有拼写错误都是坐标表中名称的开头或结尾处的额外字符(如示例所示),那么查询应该是这样的简单:

UPDATE table_with_coordinates AS x
  SET ... (do your stuff)
  FROM table_with_correct_name as y
  WHERE y.name LIKE '%' || x.name || '%';

你也可以用正则表达式测试你的勇气,但这意味着很多工作,特别是如果你不熟悉它们。

然而,如果拼写错误可能包含类似'P4ris'的内容,那么要求就会更复杂,并且会升级到模糊字符串比较的范围。我们的想法是测试具有一定数量模式的字符串并对其进行评分。然后你会选择一个重要的等级来认为你是一个拼写错误的字符串。如果您想使用Postgres功能,可以使用a good primer(请务必查看底部的链接)。