0

我正在做 ETL,想从 1000 个地址中提取城市、省份。我曾尝试SUBSTRING( «character_expression», «start», «length» )在 SSIS 中进行转换,但无法得到结果,因为我不知道在每个地址中,子字符串的开头在哪里以及每个所需子字符串的长度是多少。

以下是我想要“MDA ROAD”、“MULTAN”等的例子。

PAKISTAN COTTON GINNERS' ASSOCIATION PCGA HOUSE, M.D.A. ROAD, MULTAN
PAKISTAN CROP PROTECTION ASSOCIATION 2-A, INDUSTRIAL ESTATE ROOMY COTTON FACTORY, MULTAN
PAKISTAN AGRICULTURE & DAIRY FARMERS ASSOCIATION 16-C, PEOPLES COLONY, FAISALABAD
THE FAISALABAD CHAMBER OF COMMERCE & INDUSTRY FCCI COMPLEX, EAST, CANAL ROAD, FAISALABAD

提前致谢。

4

1 回答 1

1

您可以使用两种策略,具体取决于地址结构是否正常

  1. 使用,字符的位置将地址分解为组件
  2. 使用已知街道和省份的查找表在地址中识别它们

选项 1 是最简单的 - 但依赖于一致的地址格式:即所有组件由 a 分隔,,省始终是最后一个组件,城市始终是倒数第二个。

您将使用该TOKEN函数将地址分解为,

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

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

对于城市(倒数第二部分),它将是:

TRIM(TOKEN([Address], ",", TOKENCOUNT([Address], ",") - 1))
于 2013-03-15T10:28:10.970 回答