MySQL正则表达式错误#1139使用文字-

chr*_*s85 1 regex mysql escaping

我尝试运行此查询:

SELECT column FROM table WHERE column REGEXP '[^A-Za-z\-\']'
Run Code Online (Sandbox Code Playgroud)

但这又回来了

#1139-从regexp得到错误“无效字符范围”

在我看来,-字符类中的不会被转义,而是被视为无效范围。是否还有其他方式可以逃脱mysql作为文字-

此regex可以在mysql外部https://regex101.com/r/wE8vY5/1正常工作

我想出了该正则表达式的替代方法

SELECT column FROM table WHERE column NOT REGEXP '([:alpha:]|-|\')'
Run Code Online (Sandbox Code Playgroud)

所以问题不在于我该如何工作。问题是为什么第一个正则表达式不起作用?

这是问题的SQL提琴,http: //sqlfiddle.com/#!9/f8a006/1 。

另外,这里没有使用任何语言,查询是在数据库级别运行的。

PHP中的正则表达式:http//sandbox.onlinephpfunctions.com/code/10f5fe2939bdbbbebcc986c171a97c0d63d06e55

JS中的正则表达式:https//jsfiddle.net/6ay4zmrb/

Avi*_*Raj 5

只需更改顺序即可。

SELECT column FROM table WHERE column REGEXP '[^-A-Za-z\']'
Run Code Online (Sandbox Code Playgroud)