EJBQL / MySQL Regexes и IN - PullRequest
       6

EJBQL / MySQL Regexes и IN

2 голосов
/ 30 декабря 2010

У меня есть список регулярных выражений, и я хочу вернуть эти строки с полем, которое передает любое регулярное выражение.Есть ли что-то вроде следующего:

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

Не похоже, что регулярные выражения вообще возможны в EJBQL, поэтому я предполагаю, что мне нужно использовать собственный (MySQL) запрос.

Ответы [ 2 ]

2 голосов
/ 30 декабря 2010

Почему бы не объединить регулярные выражения в одно?

"(?:" + regex1 + ")|(?:" + regex2 + ")"

Так что если regex1 = "^.*foo(.*)bar" и regex2 = "baz(.*)frob$", вы получите

(?:^.*foo(.*)bar)|(?:baz(.*)frob$)
1 голос
/ 30 декабря 2010

Нет, это невозможно. По крайней мере, не так, как вы думаете.

Сделайте это вместо этого: вставьте регулярные выражения в виде строк в таблицу. Тогда запрос

SELECT 
  * 
FROM
  Foo AS f
  INNER JOIN Regexes AS re ON f.bar REGEXP re.pattern
...