【发布时间】:2019-01-22 12:25:14
【问题描述】:
我从互联网上下载了一个数据集,但它的格式不正确。邮政编码正在破坏我的网站。有些是完整的 9 个整数代码,有些是 2 或 3 个整数,因为前导零的格式不正确,以及介于两者之间的所有内容。我需要正常的 5 位邮政编码才能使我的网站正常工作。数据集也超过 200 万行,因此很难在 Excel 中工作。我希望让它在 MySQL 中工作。
我已经在 VBA 中编写了代码,并在 Excel 中的部分数据上对其进行了测试,我得到了想要的结果。
Function fixZips()
Dim cel As Range
For Each cel In Application.Selection
If Len(cel.Value) = 4 Then
cel.Value = "0" & cel.Value
ElseIf Len(cel.Value) = 3 Then
cel.Value = "00" & cel.Value
ElseIf Len(cel.Value) = 2 Then
cel.Value = "000" & cel.Value
ElseIf Len(cel.Value) = 7 Then
cel.Value = "00" & Left(cel.Value, Len(cel.Value) - 4)
ElseIf Len(cel.Value) = 8 Then
cel.Value = "0" & Left(cel.Value, Len(cel.Value) - 4)
ElseIf Len(cel.Value) = 9 Then
cel.Value = Left(cel.Value, Len(cel.Value) - 4)
End If
Next cel
End Function
我很难弄清楚如何在 MySQL 中执行此操作。我正在使用 phpMyAdmin。我可以在 SQL 框中完成这一切吗?我需要创建存储过程吗?如果是这样,我该如何在 phpMyAdmin 中做到这一点?
【问题讨论】:
-
我建议查看 case/when/else。它会又大又丑,但它几乎就是你已经拥有的,只是在 sql 中:)
-
您获得的数据集是 Excel 文件还是 CSV?如果是后者,请不要在 Excel 中打开它。
-
在 VBA 中你也不会那样做 :) 如果你处理的是长度为 1000 而不是 5 的代码怎么办?