更新列,table-规范化

update column, table-normalization

我有一个 table 喜欢:

name location
Emma Athens
Nick Berlin
Emma Athens-Greece
Nick Berlin, Germany
Emma 233 Street, Athena
Nick Berlin's

首先,我想将所有值(如“%Athen%”)更改为 'Athens',柏林也一样 我的问题是我的 table 充满了这样的值而且它很大,所以我想知道是否有一种方法可以更快地完成它而无需编写每个城市案例,例如使用子字符串之类的函数或创建一个函数我的数据的一般形式。 我的意思是我不想要这样的东西:

update Person  set city='Athens' where city like '%Athen%'

我必须为同一个城市取一个名字,因为关于上面的例子,是住在雅典的同一个艾玛和住在柏林的同一个尼克,所以我必须规范我的 table每个城市的每个人只看一次。

我不认为有一个简单的解决方案意味着您不必检查每个值。我会这样做的方式是:

  1. 为每个唯一的位置值创建一个不同的列表
  2. 将这个不同的列表放在 2 列“查找”的第 1 列中table
  3. 在第二列中输入第 1 列值的“干净”版本
  4. 编写一个查询,该查询将根据查找 table
  5. 中的值更新源 table 中的值

将数据放在 table 中,而不是某种形式的复杂 SQL CASE 语句中,使信息更易于维护,并且 SQL 可以更新您的源代码 table 更简单