Почему я не могу использовать соединение с регулярным выражением в MySQL? - PullRequest
0 голосов
/ 30 мая 2019

Я хочу найти недопустимые почтовые индексы в моей базе данных (которая насчитывает более 5 миллионов записей) с использованием регулярного выражения, которое я протестировал на сайте www.regex101.com и некоторых других веб-сайтах тестирования регулярных выражений, и оно отлично работает. Мне также нужно присоединиться к таблице с другим, чтобы найти более подробную информацию об этой записи. Но запрос не работает и продолжает поиск без каких-либо ошибок. Я использовал это точное регулярное выражение для другого запроса без объединения и только для одной таблицы, и это работает. Так что я думаю, что это не обратные ссылки, о которых мне говорили другие разработчики.

Это запрос, который я пытался и не работал:

"SELECT a.Name,a.AdslTel,a.Mobile, b.CodePosty 
 FROM on_customers as a, on_customers_detail as b 
 WHERE a.Serial=b.CustomerRef and a.TownshipRef='1' 
 AND b.CodePosty NOT REGEXP '^[13456789]{5}[1-9]([[:digit:]]){3}([1- 
 9]){1}$' or b.CodePosty REGEXP '([[:digit:]])\1{5,}' "

И этот запрос работал нормально:

"SELECT * FROM on_customers WHERE Mobile NOT REGEXP '^(09) 
([[:digit:]]){9}$' 
 or Mobile REGEXP '([[:digit:]])\1{5,}' "

1 Ответ

0 голосов
/ 30 мая 2019

NOT a OR b означает (NOT a) OR b - возможно, вы хотите NOT (a OR b)?

a AND b OR c означает (a AND b) OR c - возможно, вы хотите a AND (b OR c)?

Добавить скобки,по крайней мере, когда вы не уверены в правилах предшествования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...