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