Синтаксическая ошибка или нарушение доступа: 1139 Получено сообщение об ошибке «пустое (под) выражение» из регулярного выражения - PullRequest
0 голосов
/ 31 января 2019

У меня есть это регулярное выражение:

REGEXP '(^0+|0+)17198671(0+|$)$'

, которое должно соответствовать строкам, подобным этим

US00171986710
00171986710000000000000
001719867100000000

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

1 Ответ

0 голосов
/ 31 января 2019

Механизм регулярных выражений MySQL не допускает пустых альтернатив, как в ab(c|) или a|.Часть (0+|$) соответствует 1+ нулям или пустой строке в конце входной строки, и это вызывает ошибку.

Обратите внимание, что (^0+|0+) означает, что один или несколько нулей не должны появляться вначало строки, следовательно, все, что вам нужно, это

REGEXP '0+171986710*$'

Подробности

  • 0+ - один или несколько 0 s
  • 17198671 - буквальная подстрока
  • 0* - ноль или более 0 s
  • $ - конец строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...