0

我有一个脏数据库,我必须清理它,首先从地址中提取城市名称(写有几个变体),然后标准化城市名称的拼写并用标准化城市名称替换所有数据

我制作了一个 Cities_look up 表。其中写了所有可能的城市名称变体,例如,此表有 2 列

Standard_City_Name  Dirty_City Name
NEW YORK             NEW
NEW YORK             NY
NEW YORK             newyork
NEW YORK             New york
NEW YORK             ny
NEW YORK             NWYK

现在我必须通过在此表中查找比较 Dirty_City_Name 列中的所有值然后将其修剪掉来从地址中修剪城市名称。然后创建新的城市列并在那里写下 Standard_City_Name

我在叮这个

SELECT TRIM(TRIM(TRAILING Cities_lookup.Dirty_City_Name FROM Address) ), Cities_lookup.Dirty_City_Name
from Student left join Cities_lookup 
 on Student.Address like CONCAT('% ',Cities_lookup.Dirty_City_Name)

任何人都可以帮忙吗?

4

1 回答 1

2

因为您知道地址在字符串的末尾,所以您可以使用技巧来替换它stuff()。也就是说,只需将这些位置的字符替换为空字符串即可。

我发现最简单的方法是反转字符串,替换第一个 +1 字符,然后再次反转。在这种情况下,是脏城市名称的长度,“+ 1”是空格:

select reverse(stuff(reverse(Address), 1, len(cl.Dirty_City_Name) + 1, '')), cl.Standard_City_Name
from Student s left join
     Cities_lookup cl
     on s.Address like '% '+cl.Dirty_City_Name
于 2012-12-11T18:59:23.607 回答