mysql - Perl - 截断值重叠和连接的位置
问题描述
我是 Perl 语言的新手,正在尝试从 MYSQL 数据库转换一些数据。
我正在从两个不同的表中提取地址,我的目标是连接一个“完整”地址。在某些情况下,地址会在每个表的列之间分段。
例如:
╔═══╦═════════════════════╦══════════════════════╗
║ ║ a.address_1 ║ b.address_2 ║
╠═══╬═════════════════════╬══════════════════════╣
║ 1 ║ 6418 Main St ║ Main St, Detroit MI ║
║ 2 ║ 11 S Pole Rd ║ Miami, FL 33166 ║
║ 3 ║ Pittsburgh, PA 15222║ Third Ave, Pittsburgh║
╚═══╩═════════════════════╩══════════════════════╝
我需要检查地址的任何部分是否匹配,如果匹配,则截断重叠并连接剩余地址
╔═══╦══════════════════════════════════════╗
║ ║ address ║
╠═══╬══════════════════════════════════════╣
║ 1 ║ 6418 Main St, Detroit MI ║
║ 2 ║ 11 S Pole Rd Miami, FL 33166 ║
║ 3 ║ Fifth Avenue, Pittsburgh, PA 15222 ║
╚═══╩══════════════════════════════════════╝
此时我将两个地址拉入并存储它们,但现在我需要将它们转换为单个“完整”地址。
有人可以帮我解决吗?
谢谢
解决方案
您可以从一个正则表达式开始,它将第一个数据条目 ( a.address_1
) 的每个单词拆分为一个数组:
my ($addr_1, $addr_2) = $sth->fetchrow_array();
my @words = ($addr_1 =~ /(.*?)\s+/g);
之后,您可以遍历每个单词并将其从第二个地址中删除
for my $word (@words) {
$addr_2 =~ s/$word//g;
}
完成后,您基本上可以将两个字符串合并为一个:
my $concatenated_string = $addr_1 . $addr_2;
在你完成之后,你应该非常接近你所要求的。
注意:语法错误可能是可能的,我已经把它写在了我的脑海中。
推荐阅读
- python - 如何获取[0-255]范围内的像素矩阵值python
- ios - “无法同时满足约束”与 UITableViewCell
- filter - 在 DAX 中计算总和
- web-scraping - 平台如何在未经 Instagram 用户同意的情况下访问/提取受众人口统计数据?
- sql - 更新字段,使用子查询联合脚本来执行更新
- internet-explorer-11 - 使用 IE11 和旧版 Edge 的 Office 加载项的截止日期
- python - mlflow 运行命令中单个参数的多个值
- r - 如何在 ifelse 中设置 FALSE 条件,使其保持原始值
- javascript - 使用 python Selenium(通过 javascript)打开新标签突然停止工作
- python - 如何修改 scapy 数据包有效负载