为什么正则表达式setminus运算符不适用于MySQL?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么正则表达式setminus运算符不适用于MySQL?相关的知识,希望对你有一定的参考价值。
我试图使用带有正则表达式的setminus运算符选择表中没有元音的所有客户端名称(因此应该返回一个空列表),但它只是返回整个列。如果我尝试选择没有'a'或'e'或任何其他元音的所有客户名称,也会发生同样的情况。
这是我正在使用的查询:
select client_name from client
where client_name regexp '[^aeiou]';
如果我尝试做下面这样的条件,那么内部插入符确实会占用除'a'之外的每个字符。我不知道为什么它本身不起作用。
select client_name from client
where client_name regexp '^[^a]'
预期 - 空输出
实际结果 - 返回整列
答案
正则表达式可以匹配名称中的任何位置。因此它将匹配任何具有任何非元音字符的名称,而不是所有字符都不是元音的名称。你需要锚定它并量化它:
WHERE client_name REGEXP '^[^aeiou]*$'
这将测试名称中的所有字符。
或者你可以否定测试:
WHERE client_name NOT REGEXP '[aeiou]'
正则表达式匹配名称中任何位置的元音。然后使用NOT
使其返回不匹配的名称。
以上是关于为什么正则表达式setminus运算符不适用于MySQL?的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式排除非 golang 文件不适用于 inotifywait
有效的 RegEx 不适用于 ASP.Net MVC 正则表达式属性