EJBQL/MySQL Regexes и IN

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

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

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

2 ответа

Решение

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

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

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

(?:^.*foo(.*)bar)|(?:baz(.*)frob$)

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

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

SELECT 
  * 
FROM
  Foo AS f
  INNER JOIN Regexes AS re ON f.bar REGEXP re.pattern
Другие вопросы по тегам