我有一个我想要清理的数据库。它们在邮政编码列中有70个条目,其中包含一些错误值。我想通过并删除没有有效的5或9位邮政编码的行。这是我目前的声明:
SELECT * FROM `sample_requests` WHERE `request_zip` RegExp '^\d{5}$)|(^\d{5}-\d{4}$)'
我对正则表达式不是很熟悉,但我知道的很多。此外,这个特殊的正则表达式现在在表单上使用,因此如果没有有效的邮政编码就不会提交,所以我知道它有效。我只是无法让MySQL部分工作。
答案 0 :(得分:1)
您需要使用DELETE
代替SELECT
。在执行此操作之前,您可能希望创建一个重复的“sample_requests”表,以防出现错误。
这是您感兴趣的命令(首先删除重复的表行,以便您知道它有效):
DELETE FROM sample_requests_duplicate
WHERE request_zip NOT RegExp '(^\d{5}$)|(^\d{5}-\d{4}$)'