更新列,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每个城市的每个人只看一次。
我不认为有一个简单的解决方案意味着您不必检查每个值。我会这样做的方式是:
- 为每个唯一的位置值创建一个不同的列表
- 将这个不同的列表放在 2 列“查找”的第 1 列中table
- 在第二列中输入第 1 列值的“干净”版本
- 编写一个查询,该查询将根据查找 table
中的值更新源 table 中的值
将数据放在 table 中,而不是某种形式的复杂 SQL CASE 语句中,使信息更易于维护,并且 SQL 可以更新您的源代码 table 更简单
我有一个 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每个城市的每个人只看一次。
我不认为有一个简单的解决方案意味着您不必检查每个值。我会这样做的方式是:
- 为每个唯一的位置值创建一个不同的列表
- 将这个不同的列表放在 2 列“查找”的第 1 列中table
- 在第二列中输入第 1 列值的“干净”版本
- 编写一个查询,该查询将根据查找 table 中的值更新源 table 中的值
将数据放在 table 中,而不是某种形式的复杂 SQL CASE 语句中,使信息更易于维护,并且 SQL 可以更新您的源代码 table 更简单