【发布时间】:2021-12-28 20:10:01
【问题描述】:
我正在摄取与状态相关的数据,这些数据具有与状态名称相关的各种排列。例如,在下表中,我可以得到一个州名,例如“New Jersey”——这是正确的,但我也可以得到一个州名,例如“NewJersey”。
问题:从源提取数据时,这些值具有不同的 ID。因此,在处理转换时,会读取两个排列。
| ID | State |
|---|---|
| 1 | New Jersey |
| 2 | NewJersey |
我想输出正确的排列名称。比如决赛桌应该是这样的:
| ID | State |
|---|---|
| 1 | New Jersey |
注意:我曾经想过用MAX长度来识别字符串,但还没有将这个理论付诸实践。
我非常感谢您对此的任何帮助。
【问题讨论】:
-
也许创建一个包含所有排列的表,假设你都知道它们,然后加入到该表的状态。所以 New Jersey 和 NewJersey 在您的排列表中设置为 1。
-
嗨@Isolated 我试图实现一个映射表,但不幸的是,这是手动密集型的。我也无法访问源代码,也无法满足所有变化。
-
假设您的数据与您的示例一样简单(这似乎不太可能),比较删除所有空格的字符串,然后取最长的一个。
-
在不知道所有变化的情况下,我认为很难确定正确的转换方法。听起来您有时会将“North”显示为“North”、“N”、“No”、“Nrth”等。
-
数据卫生是一场持久战。我建议获取一个邮政编码数据库,您可以在其中根据邮政编码进行验证和规范化,这不太可能产生变化(除了诚实的拼写错误)。
标签: sql sql-server database stored-procedures azure-sql-database