Использование MySQL REGEX для сопоставления повторяющихся номеров в телефонных номерах

0

У меня был предыдущий вопрос, используя preg_replace, но я не могу заставить его работать с помощью функции REG REG. В принципе, у меня есть база данных телефонных номеров. Например:

8452100000

Я хочу иметь возможность динамически искать номера телефонов следующим образом:

2XX512YYYY

Где X и Y могут быть любой цифрой, но каждый представляет повторение одной и той же цифры. Я пробовал это до сих пор, и он не работает. Я могу заставить его работать с PHP preg_match(), но не с MySQL REGEX(). Вы видите, что я здесь делаю неправильно?

SELECT * FROM numbers WHERE number REGEXP '^2[[:digit:]]\1{1}512[[:digit:]]\2{4}'
Теги:

1 ответ

2
Лучший ответ

\1 и \2 не будут работать, потому что MySQL не поддерживает обратные ссылки на подгруппы в регулярных выражениях. Вы должны быть четко о том, что может совпадать, например:

SELECT * FROM numbers WHERE number REGEXP '^2(00|11|22|33|44|55|66|77|88|99)512(0000|1111|2222|3333|4444|5555|6666|7777|8888|9999)'

Это неудобно, но так оно и есть до тех пор, пока MySQL не выполнит механизм регулярных выражений (PCRE), совместимый с Perl, если вы не хотите устанавливать расширение.

  • 0
    Я сделал это и до сих пор не работает. Это число, которое я пытаюсь найти с помощью этого регулярного выражения 2445121111, и ничего не возвращается
  • 0
    Контрелл Я также переключил {1} в первой группе на {2} и до сих пор не работает. Поле его в это bigint. Это имеет значение?
Показать ещё 11 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню