邮政编码的MySQL REGEX WHERE子句

时间:2012-05-08 01:00:16

标签: mysql regex where-clause

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

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

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

1 个答案:

答案 0 :(得分:1)

您需要使用DELETE代替SELECT。在执行此操作之前,您可能希望创建一个重复的“sample_requests”表,以防出现错误。

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

DELETE FROM sample_requests_duplicate 
WHERE request_zip NOT RegExp '(^\d{5}$)|(^\d{5}-\d{4}$)'