我指的是一个开源代码。在那里我可以找到一个带有这种过滤器的sql。
select sometext from table1,table2 where table1.sometext LIKE
CONCAT('% ',table2.test_keyword,' %') AND table2.test_keyword NOT
REGEXP '__*';
这个sql中的___ *是什么?
答案 0 :(得分:5)
__*
匹配一个_
,后跟零个或多个_
s。
__*
^^^
||\__ (zero or more) ^
|\___ underscore |
\____ underscore, then |
_+
会做同样的工作。
_+
^^
|\__ (one or more) ^
\___ underscore |
答案 1 :(得分:1)
它只是一个或多个下划线字符。
该模式最好读作:
'_'
,正好是一个下划线,'_*'
,后跟零或更多下划线。请记住,没有开始标记,它将匹配字符串中任何位置的模式,因此它基本上意味着任何带有下划线的字符串(或者,更确切地说,因为你正在使用NOT
,字符串没有下划线。)
它也是不必要的复杂,因为你可以用AND table2.test_keyword NOT REGEXP '_'
达到同样的效果。
有关正则表达式的最新MySQL文档,请参阅here(本答复时为5.6)。