Mysql错误“重复运算符操作数无效”

时间:2018-12-07 08:58:09

标签: mysql sql

我遇到了一个以前从未真正见过的奇怪的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 :(得分:2)

\和*本身是元字符,这就是为什么*后跟两个\的原因,因此seconod \也不被视为文字,而是元字符

这将起作用:

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

请参阅链接,它现在可以正常工作:http://sqlfiddle.com/#!9/e695cf/1/0

答案 1 :(得分:1)

如果您想匹配“ 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 *'