我遇到了一个以前从未真正见过的奇怪的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
答案 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 *'