Mysql ошибка "оператор операнда повторения недействителен" - PullRequest
0 голосов
/ 07 декабря 2018

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

SELECT *
  FROM table
 WHERE col REGEXP '^* MAN *$'  
 LIMIT 100

Ошибка:

#1139 - Got error 'repetition-operator operand invalid' from regexp

- ОБНОВЛЕНИЕ -

Хорошо Я могу подтвердить, что следующие два решения работали.Благодаря помощи обоих ответов ниже:

SELECT *
  FROM table
 WHERE col REGEXP '^(\\*) MAN (\\*)$'  
 LIMIT 100

SELECT *
  FROM table
 WHERE col REGEXP '^[*] MAN [*]$'  
 LIMIT 100

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Это должно сработать, если вы хотите сопоставить 'bla bla * MAN * bla bla', например

SELECT *
FROM table
WHERE col REGEXP '[*] MAN [*]' 

Если вы хотите сопоставить '* MAN *'

SELECT *
FROM table
WHERE col REGEXP '^[*] MAN [*]$' 

или без регулярного выражения

SELECT *
FROM table
WHERE col ='* MAN *' 
0 голосов
/ 07 декабря 2018

\ и * сами по себе являются метасимволами, поэтому за * должны следовать два \, так что secondod \ также не считается литералом, но метасимвол

это будет работать:

SELECT *
FROM Table1
WHERE column1 RLIKE '(\\*)(man)(\\*)';  

см. ссылку, работающую сейчас: http://sqlfiddle.com/#!9/e695cf/1/0

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