У меня был предыдущий вопрос, используя 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
не будут работать, потому что 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, если вы не хотите устанавливать расширение.