我有一个Regexes列表,并希望返回那些带有传递任何正则表达式的字段的行。无论如何还有以下内容:
SELECT * FROM Foo as f WHERE f.bar IN ("regex1","regex2");
在EJBQL中看起来并不像Regex,因此我猜测我必须使用本机(MySQL)查询。
答案 0 :(得分:2)
为什么不将正则表达式合并为一个?
"(?:" + regex1 + ")|(?:" + regex2 + ")"
因此,如果regex1 = "^.*foo(.*)bar"
和regex2 = "baz(.*)frob$"
,您将获得
(?:^.*foo(.*)bar)|(?:baz(.*)frob$)
答案 1 :(得分:1)
不,这是不可能的。至少不是你想象的那样。
请改为:将正则表达式作为行插入表中。然后查询
SELECT
*
FROM
Foo AS f
INNER JOIN Regexes AS re ON f.bar REGEXP re.pattern