0

我有一个要清理的数据库。他们在邮政编码列中有 70k 个条目,其中包含一些错误的值。我想检查并删除没有有效 5 位或 9 位邮政编码的行。这是我目前的陈述:

SELECT * FROM `sample_requests` WHERE `request_zip` RegExp '^\d{5}$)|(^\d{5}-\d{4}$)'

我对正则表达式不是很熟悉,但我知道的足够多了。这个特殊的正则表达式现在也用在表单上,​​所以如果没有有效的邮政编码就不会提交,所以我知道它可以工作。我只是无法让 MySQL 部分工作。

4

1 回答 1

1

您需要使用DELETE而不是SELECT. 在执行此操作之前,您可能需要创建一个重复的“sample_requests”表以防出错。

这是您感兴趣的命令(首先删除重复的表行,以便您知道它有效):

DELETE FROM sample_requests_duplicate 
WHERE request_zip NOT RegExp '(^\d{5}$)|(^\d{5}-\d{4}$)'
于 2012-05-08T01:05:31.937 回答