EJBQL / MySQL Regex和IN

时间:2010-12-30 13:12:23

标签: java mysql regex ejbql

我有一个Regexes列表,并希望返回那些带有传递任何正则表达式的字段的行。无论如何还有以下内容:

SELECT * FROM Foo as f WHERE f.bar IN ("regex1","regex2");

在EJBQL中看起来并不像Regex,因此我猜测我必须使用本机(MySQL)查询。

2 个答案:

答案 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