2012-05-08 4 views
0

У меня есть база данных, которую я пытаюсь очистить. У них 70k записей с некоторыми плохими значениями в столбце почтового индекса. Я хочу пройти и удалить строки, которые не имеют действительного 5 или 9-значного почтового индекса. Это текущее заявление у меня:Предложение MySQL REGEX WHERE для почтового индекса

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

Я не очень хорошо знаком с регулярными выражениями, но я знаю достаточно. Также это конкретное регулярное выражение используется в форме сейчас, так что оно не будет отправляться без действительного почтового индекса, поэтому я знаю, что он работает. Я просто не могу заставить часть MySQL работать.

+1

Вы упускаете открывающую круглую скобку: ' '(^ \ d {5} $) | (^ \ d {5} - \ d {4} $) '' – eggyal

ответ

1

Вам необходимо использовать DELETE вместо SELECT. Прежде чем вы это сделаете, вы можете создать дубликат таблицы sample_requests, если вы допустили ошибку.

вот команда вас интересуют (удаление строк таблицы дубликата первой, так что вы знаете, это работает):

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

Вправо. Я только что пытался получить часть RegExp для работы и понял, что SELECT был немного безопаснее, чем DELETE. :) Будет ли код, который вы мне дали, удалить хороших? Как вы говорите «WHERE! =» С регулярными выражениями? –

+0

проверить мой новый ответ, он имеет синтаксис 'NOT' (' = 'или'! = 'Не будет работать), если это не работает, не существует ли'! 'В Regex? Я не лучший в этом, поэтому я не знаю –

+0

Спасибо. Вы ответили на мой вопрос. НЕТ, похоже, не работает, поэтому мне придется попытаться выяснить, как Regex! оператор работает. –

Смежные вопросы