通过正则表达式匹配搜索MySQL数据库(反向)

top*_*erg 5 regex mysql

如果我有一个包含正则表达式模式的列的数据库表,是否可以返回字符串匹配的行(不依次系统地测试每一行)?

例如,像这样的表:

RowID     RegExPattern
1         foo\.$
2         bar\.$
3         baz\.$
4         (foo|bar)\.$
Run Code Online (Sandbox Code Playgroud)

和这样的输入字符串:

foo.php
Run Code Online (Sandbox Code Playgroud)

将返回RowIDs 14

Mar*_*ers 7

如果我有一个包含正则表达式模式的列的数据库表,是否可以返回字符串匹配的行[...]?

是的,这是可能的.

SELECT RowID
FROM yourtable
WHERE 'foo.php' REGEXP RegExPattern
Run Code Online (Sandbox Code Playgroud)

请注意,您的正则表达式将不匹配.如果省略,$那么他们会.

看到它在线工作:sqlfiddle

(没有依次系统地测试每一行)

呃......不.您需要测试每一行.