【发布时间】:2021-02-04 21:22:40
【问题描述】:
我只是从另一个程序中得到一个未解析的地址,我需要将它作为它的组件存储在接收系统中。我需要一些帮助!我给你洗猫。随便。
好消息是我可以依靠这些换行符。我可以指望城市后的逗号+空格,我可以指望州或省的两位数缩写,后跟空格。所以(没有打高尔夫球)我很快用 Perl 写了它,以提供一些工作代码。
关键是如果我们在 \n 上拆分输入,我只想要第二行/元素(地址 1)、最后一行/元素(国家/地区)和倒数第二个元素(城市、ST zip)。然后我需要将该元素拆分为其组件。我下面的 Perl 代码可以工作,但是如何在 T-SQL 中重新创建它?
$_ = "Company\n".
"Address 1\n".
"Address 2 (opt)\n".
"Address 3 (opt)\n".
"City, ST zip\n".
"Country";
# also works for "City, PV zip zip\n"
@add = split('\n');
$address = $add[1]; # who cares about addy and addy3
$country = pop(@add);
$ctz = pop(@add);
if ($ctz =~ /(.*), (..) (.*)/) {
# Yes a $ctz line like "City of Angels, II, MO 65423" would break it
$city = $1;
$state = $2;
$zip = $3;
} else {
$city = $state = $zip = '';
}
print "Address: $address\n".
"City: $city\n".
"State Code: $state\n".
"Zip: $zip\n".
"Country: $country\n";
【问题讨论】:
-
其实,那个正则表达式可以解析
City of Angels, II, MO 65423就好了 -
哦,对了,贪婪。好吧,我敢肯定有一些奇怪的城市名称会让我们失望。但是人只是说取最后一行,倒数第二行将其拆分,然后在 tsql 中取第二行让我发疯。集成商有大约 50 行代码,但它失败了。我在 Fiver 上付钱给某人,但他的代码也不起作用,不值得为 20 美元与他争吵。有人吗?
-
你试过正则表达式了吗? -- 我找到了很多例子here。我敢肯定那里有更多的文档。如果是的话,特别是什么给你带来了麻烦(我没有从上一条评论中得到描述,关于“最后一行”然后是“倒数第二行”然后是“第二行”......你能显示确切的行吗?(或者,更好的是,您的
SQL尝试?)