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

0

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

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

который должен соответствовать таким строкам

US00171986710
00171986710000000000000
001719867100000000

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

  • 0
    (0+|) это просто причудливый способ написания 0* .
  • 1
    Это эквивалентно 0+171986710*
Теги:

1 ответ

0

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

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

REGEXP '0+171986710*$'

подробности

  • 0+ - один или несколько 0 с
  • 17198671 - буквальная подстрока
  • 0* - ноль или более 0 с
  • $ - конец строки.
  • 1
    Я был очень уставшим, когда написал это. Спасибо за упрощение для меня, хотя!
  • 0
    была эта проблема с MySQL 5+, но не MySQL 8
Показать ещё 3 комментария

Ещё вопросы

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