从SSIS中的地址提取城市、省、国家等

从SSIS中的地址提取城市、省、国家等,ssis,substring,extract,Ssis,Substring,Extract,我正在做ETL,想从1000个地址中提取城市、省份。我在SSIS中尝试了子字符串(«character_expression»,«start»,«length»)转换,但无法获得结果,因为我不知道每个地址中的子字符串的起始位置以及每个所需子字符串的长度 以下是我想要“M.D.A.路”、“木尔坦”等的例子 提前感谢。根据地址结构是否规则,您可以使用两种策略 使用,字符的位置将地址分解为多个组件 使用已知街道和省份的查找表在地址中标识它们 选项1是最简单的-但取决于地址格式的一致性:即所有组件都由,

我正在做ETL,想从1000个地址中提取城市、省份。我在SSIS中尝试了
子字符串(«character_expression»,«start»,«length»)
转换,但无法获得结果,因为我不知道每个地址中的子字符串的起始位置以及每个所需子字符串的长度

以下是我想要“M.D.A.路”、“木尔坦”等的例子


提前感谢。

根据地址结构是否规则,您可以使用两种策略

  • 使用
    字符的位置将地址分解为多个组件
  • 使用已知街道和省份的查找表在地址中标识它们
  • 选项1是最简单的-但取决于地址格式的一致性:即所有组件都由
    分隔,省始终是最后一个组件,城市始终是第二个

    您可以使用
    令牌
    函数将地址分解为

    对于省(最后一个组成部分),它类似于:

    TRIM(TOKEN([Address], ",", TOKENCOUNT([Address], ",")))
    
    对于城市(最后的第二个组成部分),它将是:

    TRIM(TOKEN([Address], ",", TOKENCOUNT([Address], ",") - 1))
    

    您将如何从给定地址识别
    城市
    ?您是否有
    主表
    ?Ross McNab感谢您的回复,但我使用的是SSIS 2008,此版本中没有令牌功能。在SSIS 2008中如何实现这一点?
    TRIM(TOKEN([Address], ",", TOKENCOUNT([Address], ",") - 1))